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