Надеюсь, кто-то мне поможет. Я пытаюсь сделать светофор с java Threads. Есть два круга. Каждый круг представляет собой лампу (нить). Я хотел бы, чтобы каждый светильник работать х мс, а затем выключить и пусть другие лампы работы (опять же на несколько секунд и снова ..)java threads простая глупая программа
public void run()
{
while (true)
{
repaint();
if (working)
{
System.out.println(name + " is WORKING ");
try
{
Thread.sleep(LAMP_WORKING_TIME);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println(name + " has done working");
synchronized (lock)
{
this.working = false;
lock.notifyAll();
}
}
else
{
try
{
System.out.println(name + " is waiting..");
synchronized (lock)
{
lock.wait();
working = true;
}
System.out.println(name + " is WAKING UP AFTER WAIT");
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
Когда замок объявлен как свойство класса:
private final Object lock = new Object();
Я считаю, что моя проблема возникает с помощью методов wait/notify. Пожалуйста, помогите мне исправить это!
Это не моя домашняя работа. Никто не собирается проверять это. Это подготовка к тесту. – Noray
Вы должны добавить больше кода. Где и как вы определяете 'work' и' lock'? – toto2
Кроме того, я не знаю, если вы делаете это, чтобы узнать wait/notify, но если нет, вы должны знать, что они несколько устарели, и вместо этого вы должны использовать утилиты в java.util.concurrent. Но в вашем случае это похоже, что Swing Timer делает именно то, что вы хотите. – toto2