Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите задание с джава с потоками

Иван Кондрашев Мастер (1262), на голосовании 1 год назад
Create a thread that waits for a signal from another using wait and notify
Кто сделает буду очень благодарен ибо я вообще этой темы не понимаю
Голосование за лучший ответ
oscrn Мастер (1137) 1 год назад
Конечно, я могу помочь с этим заданием. Вот пример кода на Java, который создает два потока, один из которых ждет сигнала от другого с использованием методов wait() и notify():
 public class ThreadWaitNotify { 
public static void main(String[] args) {
final Object signal = new Object(); // объект для синхронизации потоков

Thread waitingThread = new Thread(() -> {
synchronized (signal) { // входим в критическую секцию
try {
System.out.println("Waiting for signal...");
signal.wait(); // ждем сигнал
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Received signal!");
}
});

Thread signalingThread = new Thread(() -> {
synchronized (signal) { // входим в критическую секцию
try {
Thread.sleep(5000); // имитируем задержку перед отправкой сигнала
} catch (InterruptedException e) {
e.printStackTrace();
}
signal.notify(); // отправляем сигнал
System.out.println("Signal sent!");
}
});

waitingThread.start(); // запускаем поток, который будет ждать сигнала
signalingThread.start(); // запускаем поток, который отправит сигнал
}
}
В этом примере создается объект signal, который используется для синхронизации потоков. Поток waitingThread вызывает метод wait() на объекте signal и ждет, пока другой поток не отправит сигнал методом notify(). Поток signalingThread имитирует задержку перед отправкой сигнала и затем вызывает метод notify() на том же объекте signal.

Обрати внимание, что вызовы методов wait() и notify() должны быть выполнены внутри блока синхронизации на том же объекте. Это гарантирует, что поток, вызывающий wait(), не будет продолжен до тех пор, пока другой поток не вызовет notify() на том же объекте.
Надеюсь понятно обьяснил)
SchweikМыслитель (6140) 1 год назад
А есть ли гарантия что waitingThread запуститься раньше чем signalingThread?
Похожие вопросы