スレッド間通信

/ * *
 *ロックを関連するコードとデータの同期を実行するための論理スレッドは、同じクラスで、ここではビジネスのカテゴリ、ビジネスクラスによって維持されるデータの同期があります
 *コントロールのスレッドに関連付けられている別のコードは、クラス自体のスレッドを指し
 *
 * / 
パブリック クラスCommunicationTest {

    パブリック 静的 ボイドメイン(文字列[]引数){

        ビジネスビジネス = 新しいビジネス();

        新しいスレッド(新しいRunnableを(){

            @オーバーライド
            公共 ボイドラン(){
                 ためint型 i = 1 ; iは<= 50 ; I ++ ){
                    business.main(I);
                }
            }
        })。開始();

        新しいスレッド(新しいRunnableを(){

            @オーバーライド
            公共 ボイドラン(){
                 ためint型 i = 1 ; iは<= 50 ; I ++ ){
                    business.sub(I);
                }
            }
        })。開始();

    }

}

クラスビジネス{
    
    プライベートブールisShouldSub = ;

    公共同期無効サブ(int型I){
         ながら(!isShouldSubは){
             しようと{
                 この)(.WAITを。
            } キャッチ(InterruptedExceptionある電子){
                 // TODO自動生成キャッチブロック
                e.printStackTrace();
            }
        }
        INTの J = 1 ; J <= 10 ; J ++ ){
            システム。アウト .println(" のサブスレッド配列   " + J + " のループ" + I)。
        }
        isShouldSub = ;
        この.notify();
    }

    国民は、同期無効メイン(int型{i)は、
         一方で(isShouldSub){
             試み{
                 この.WAIT();
            } キャッチ(InterruptedExceptionある電子){
                 // TODO自動生成キャッチブロック
                e.printStackTrace();
            }
        }
        INTの J = 1 ; J <= 30 ; J ++ ){
            システム。アウト .println(" のメインスレッド配列   " + J + " のループ" + I)。
        }
        isShouldSub = ;
        この.notify();
    }
}

 

おすすめ

転載: www.cnblogs.com/moris5013/p/11707764.html