誰かが私を助けてくれることを願っています。私は、Javaスレッドを使って信号を発信しようとしています。 2つの円があります。各円はランプ(糸)です。私は(再び、再びいくつかの秒間と...)各ランプは、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();
私の問題は、wait/notifyメソッドによって発生すると考えられます。 お願いします。
私の宿題ではありません。誰もそれをチェックするつもりはない。それはテストの準備です。 – Noray
さらにコードを追加する必要があります。どこでどのように「働く」と「ロック」を定義しますか? – toto2
また、あなたがwait/notifyを学ぶためにそれをしていたかどうかはわかりませんが、もしそうでなければ、いくらか推奨されていないことを知っていて、代わりにjava.util.concurrentのユーティリティを使うべきです。しかし、あなたのケースでは、スイングタイマーがまさにあなたが望んでいるように見えます。 – toto2