Ім'я файлу: ТІ-01_Диханов_Ярослав_Асинхронн_лаб_6.docx
Розширення: docx
Розмір: 39кб.
Дата: 12.12.2022
скачати
Пов'язані файли:
Ой летіла стріла.doc
Практична робота №2.docx
Педагогіка_дошкільна_для_сайта_1.docx
Фізичний розвиток немовлят курсова.doc
Античні міста.docx
Гошко Анастасія СБЗ-41 економіка (1).docx
Методична розробка (2).doc
Моя концепція.docx
[UAReferats.com]_C29N14832.doc
мет зош Г-4.docx
реферат (2).rtf
194445.docx
перзентація 1.pptx
доклад.docx

Міністерство освіти і науки України

Національний технічний університет України

«Київський політехнічний інститут ім. Ігоря Сікорського»

Кафедра інжеренерії програмного забезпечення в енергетиці


Лабораторна робота №6

з дисципліни «Асинхронне програмування»

«Демонстрація роботи методів wait(), notify()/notifyAll(). Створити декілька потоків і один з яких, в певний момент часу, повинен стати неактивним через виклик методу wait(). В іншому потоці викликати метод notify() для того, щоб «розморозити» неактивні потоки. Зверніть увагу, що дані методи можуть бути викликані лише в synchronized блоці і повинні бути обгорнуті в try-catch»

Виконав: студент 3 курсу

НН ІАТЕ групи ТІ-01

Диханов Ярослав

Перевірив: ас. Гейко Олег Олександрович

Київ – 2022

Приклад коду:

public class Main {

public static void main(String[] args) {

Store store=new Store();

Producer producer = new Producer(store);

Consumer consumer = new Consumer(store);

Consumer consumer2 = new Consumer(store);

Thread thread1 = new Thread(producer);

Thread thread2 = new Thread(consumer);

Thread thread3 = new Thread(consumer2);

thread2.start();

thread3.start();

thread1.start();

}

}

class Store{

private int product=0;

public synchronized void get() {

while (product<1) {

try {

wait();

}

catch (InterruptedException e) {

e.printStackTrace();

}

}

product--;

System.out.println("Customer bought 1 item");

System.out.println("Items on storage: " + product);

}

public synchronized void put() {

product += 12;

System.out.println("Producer added 1 item");

System.out.println("Items on storage: " + product);

// notify();

notifyAll();

}

}

class Producer implements Runnable{

Store store;

Producer(Store store){

this.store=store;

}

public void run(){

store.put();

}

}

class Consumer implements Runnable{

Store store;

Consumer(Store store){

this.store=store;

}

public void run(){

for (int i = 1; i < 6; i++) {

store.get();

}

}

}

Приклад роботи(скріншоти) з notifyAll():



Приклад роботи(скріншоти) з notify():


скачати

© Усі права захищені
написати до нас