0

スレッドは2つあります。 1つはxを操作し、もう1つはxを表示しています。同期、割り込み、待機、および通知を使用して相互排除を行うにはどうすればよいですか。イメージはこれを示しています。待機、同期、割り込み、通知を使用した相互排除

Execution image

私はこの解決策を考え出したていますが、その正確な場合、IAMはわかりません。

書き込み

synchronized(x){ 
    x = x + 1; 
    notify(); 
    try{ 
     wait(); 
    } 
    catch(InterruptedException e){ 
    } 
} 

読む

synchronized(x){ 

    try{ 
     wait(); 
    } 
    catch(InterruptedException e){ 
    } 
    System.out.print(x); 
} 

答えて

0

あなたはすでにこれを実現するつもりはないことを確認するsynchronized(x) {}閉鎖を使用しました。あなたがしていることは正しいです。ステートメントが別のメソッドにある場合は、メソッドがこのメソッドから外れるまで影響を受けないようにメソッドを同期させることもできます。

public synchronized void doSmth() { 
    //do smth; 
} 
関連する問題