![]() | Ім'я файлу: ТІ-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(): ![]() |