Как использовать wait () и notify () с использованием разных классов в Java - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь заключить функцию ожидания в classA, но я хочу notify() из classB.Как мне этого добиться?

1 Ответ

0 голосов
/ 11 октября 2018

У вас есть несколько вариантов здесь.Самый простой - это создать объект любого типа и разделить его между двумя классами.

Любой объект в java может иметь методы notify () и wait ().

Вы можете создать объект

Object sharedObject = new Object();

Затем передать этот объект обоим классам (или, точнее, экземпляру классов)

ClassA a = new ClassA(sharedObject);
ClassB b = new ClassB(sharedObject);

Затем внутри некоторого метода в ClassA вы можете вызвать:

synchronized(sharedObject) {
     sharedObject.wait();
}

В одном потоке, а затем в другом потоке вы можете разбудить его, вызвав:

synchronized(sharedObject) {
     sharedObject.notify();
}

Это основной способ сделать это.Обратите внимание, что перед ожиданием или уведомлением необходимо выполнить синхронизацию с этим объектом.

Существует более продвинутый и надежный способ сделать это с помощью условных переменных.

Подробнее об этом вы можете узнать в этомотличный онлайн курс https://www.udemy.com/java-multithreading-concurrency-performance-optimization/?couponCode=CONCURRENCY

Это действительно дешево, но учит вас, как правильно использовать все эти методы параллелизма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...