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