では、私は単純なコード片を怒鳴るを持っている:スレッド:()を通知し、(待つ)javaの
public class ThreadA {
public static void main(String[] args){
ThreadB b = new ThreadB();
b.start();
synchronized(b){
try{
System.out.println("Waiting for b to complete...");
b.wait();
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("Total is: " + b.total);
}
}
class ThreadB extends Thread{
int total;
@Override
public void run(){
synchronized(this){
for(int i=0; i<100 ; i++){
total += i;
}
notify();
}
}
}
結果:
Waiting for b to complete...
Total is: 4950
と私たちは、このコードを使用する必要がある理由問題があり、私はここにはっきりとはいない。
synchronized(this){
for(int i=0; i<100 ; i++){
total += i;
}
notify();
}
ここで同期を使用しないと、同じ結果が得られます。
同期されていないと、おそらく動作しない可能性があります。あなたはスレッドスケジューラの恩恵を受けています。 – Henry
何を待つ**と**通知する**あなたの質問ですか? –
[Javaで待機して通知する方法]の複製がありますか?(http://stackoverflow.com/questions/886722/how-to-use-wait-and-notify-in-java) – rkosegi