У вас есть несколько вариантов здесь.Самый простой - это создать объект любого типа и разделить его между двумя классами.
Любой объект в 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
Это действительно дешево, но учит вас, как правильно использовать все эти методы параллелизма.