我希望有人會幫助我。我一直在嘗試用java線程製作交通燈。 有兩個圓圈。每個圓圈都是燈(線)。我想每個燈設置爲x毫秒的工作,然後關閉並讓其他燈的工作(幾秒鐘一次又一次..)java線程簡單的愚蠢程序
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();
我相信我的問題發生在等待/通知方法。 請幫我解決這個問題!
這不是我的家庭作業。沒有人會檢查它。這是一個準備測試。 – Noray 2012-02-14 17:24:11
你應該包含更多的代碼。你在哪裏以及如何定義「工作」和「鎖定」? – toto2 2012-02-14 17:53:31
另外,我不知道你是否在學習wait/notify,但是如果沒有,你應該知道它們已經被棄用了,你應該使用java.util.concurrent中的工具。但在你的情況下,它看起來像一個擺動計時器不正是你想要的。 – toto2 2012-02-14 17:55:00