Javaのマルチスレッド待ちの通信を()と通知()メソッド

1.wait()メソッドと睡眠()メソッド:

待機中にロックを解除する()メソッドを待つ;睡眠()ロック睡眠を保持し、待っている間にロックを解除しません。

2.notify():

ランダムスレッドを覚ます、スレッドが待機しているキューから移動同期キューを待っているキュー内で待機します。

パブリック クラスDemo_Print {
     公共 静的 ボイドメイン(文字列[]引数){ 
        プリントP = 新しいプリント()。
        新しいスレッド(){
             公共 ラン(){
                 ながら、){ 
                    p.print1(); 
                } 
            }。
        }。開始(); 

        新しいスレッド(){
             公共 ラン(){
                 ながら、){ 
                    p.print2(); 
                }
            }。
        }。開始(); 
    } 
} 

クラスプリント{
     INTフラグ= 1 

    公共 同期 無効PRINT1(){
         場合(フラグ= 1!){
             試み{
                 この.WAIT(); 
            } キャッチ(InterruptedExceptionある電子){
                 // TODO自動生成されたcatchブロック
                e.printStackTrace(); 
            } 
        } 
        System.out.print( "你" )。
        System.out.print( "好" );
        System.out.print( "吗????????????" ); 
        System.out.println(); 

        フラグ = 2 この.notify(); 
    } 

    公共 同期 ボイドPRINT2(){
         場合(フラグ= 2!){
             試み{
                 この.WAIT()。
            } キャッチ(InterruptedExceptionある電子){
                 // TODO自動生成されたcatchブロック
                e.printStackTrace(); 
            } 
        } 
        System.out.print( "我" )。 
        System.out.print( "好" )。 
        のSystem.out.println(); 

        フラグ = 1 ;
         この.notify(); 
    } 
}

この場合には、質問と回答スレッド同期通信を実現します。処理待ち()メソッドの後にオンにすると、フラグ値、実装のさらに別の方法を変更することによって、スレッドをスリープ解除します。

おすすめ

転載: www.cnblogs.com/springa/p/12631483.html