ここにコードスニペットがあります
public class ITC3 extends Thread {
private ITC4 it;
public ITC3(ITC4 it){
this.it = it;
}
public static void main(String[] args) {
ITC4 itr = new ITC4();
System.out.println("name is:" + itr.getName());
ITC3 i = new ITC3(itr);
ITC3 ii = new ITC3(itr);
i.start(); ii.start();
//iii.start();
try{
Thread.sleep(1000);
}catch(InterruptedException ie){}
itr.start();
}
public void run(){
synchronized (it){
try{
System.out.println("Waiting - " + Thread.currentThread().getName());
it.wait();
System.out.println("Notified " + Thread.currentThread().getName());
}catch (InterruptedException ie){}
}
}
}
class ITC4 extends Thread{
public void run(){
try{
System.out.println("Sleeping : " + this);
Thread.sleep(3000);
synchronized (this){
this.notify();
}
}catch(InterruptedException ie){}
}
}
与えられた出力は
Output:
Waiting - Thread-1
Waiting - Thread-2
Sleeping : Thread[Thread-0,5,main]
Notified Thread-1
Notified Thread-2
これで、すべてのスレッドが通知を受けます。この場合、出力全体を理解できません。
- すべてのスレッドが通知されるのはなぜですか?
- Sleeping が `Thread[Thread-0,5,main] を出力する理由
- プログラム全体の作業でかなり迷子になりました。
どんなポインタも役に立ちます。
ありがとう。