Вы можете хранить один экземпляр в статическом поле класса, который может wait
иметь любое количество потоков. Где хранится экземпляр, не имеет значения. Ключевым моментом является то, что все потоки имеют доступ к одному и тому же экземпляру - будь то из статического поля / метода или из одноэлементного сервисного объекта или статической локальной переменной.
public class MakeMeWait {
private static Object semaphore = new Object();
public static void waitPlease() {
semaphore.wait();
}
public static void wakePlease() {
semaphore.notifyAll();
}
}
Хотя в этом примере используются встроенные методы Java wait
и notifyAll
, гораздо лучше использовать пакет java.util.concurrent
, а не использовать собственные решения для многопоточности.