パブリック クラスTestSyn { / * *スレッドの同期:同じリソースを使用して複数のオブジェクト、スレッドがリソースを所有しているとき、他のスレッドがリソースを解放するためにスレッドを使用することを待って、スレッドブロックにリソースを使用することはできません *場合、スレッド1「同期方式」又は「同期コード・ブロック」の「オブジェクト」へのアクセス、 「同期方式」又は「同期コード・ブロック」の「オブジェクトの」他のスレッドへのアクセスがブロックされます。 2.スレッドが「同期方式」又は「同期コード・ブロック」の「オブジェクト」へのアクセス、 他のスレッドはまだすることができ、非同期ブロック「オブジェクトへの」アクセス。 「同期方式」又は「同期コード・ブロック」3.アクセスするスレッドは、「オブジェクト」、 他の「同期方式」又は「同期コードブロック」「オブジェクトの」他のスレッドへのアクセスがブロックされます。 * / パブリック 静的 ボイドメイン(文字列[]引数を){ // TST1(); // 同じオブジェクトテストするための通常のメソッドの呼び出し // TST2を(); //は、試験のために、同じオブジェクトの同期メソッドを呼び出す // TST3(); // 呼び出し別の方法は、テストするために、同じオブジェクト // tst4(); // テストに同じ同期方法の異なるオブジェクトを呼び出す // tst5(); // 異なるオブジェクトをテストするために、異なる同期メソッドを呼び出す // tst6(); // テストの静的同期方法で異なるオブジェクトを呼び出します // tst7(); //は異なる同期テストするためのメソッドを呼び出す } 公共 ボイド(TEST1)を{ System.out.println(「通常のメソッドを実行」); 試み{ Thread.sleep( 2000 ); } キャッチ(InterruptedExceptionある電子){ e.printStackTrace(); } System.out.println(「一般的な方法は終了します」)。 } 公共 同期 無効TEST2(){ System.out.println(「同期方法を実行する」); 試み{ Thread.sleep( 2000 ); } キャッチ(InterruptedExceptionある電子){ e.printStackTrace(); } System.out.println(「終了同期方法」)。 } 公共 のボイドTEST3(){ 同期(本){ System.out.println(「シンクブロック実行」); 試み{ Thread.sleep( 2000 ); } キャッチ(InterruptedExceptionある電子){ e.printStackTrace(); } System.out.println( "同期の終わり" ); } } パブリック 静的 同期 無効TEST4(){ System.out.println(「同期を実行する静的メソッド」); 試み{ Thread.sleep( 2000 ); } キャッチ(InterruptedExceptionある電子){ e.printStackTrace(); } System.out.println(「静的同期方法は終了します」)。 } プライベート 静的 無効tst7(){ TestSyn TS = 新しいTestSyn(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts.test2(); } })。開始(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ TestSyn.test4(); } })。開始(); } プライベート 静的 無効tst6(){ TestSyn TS = 新しいTestSyn(); TestSyn TS2 = 新しいTestSyn(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts2.test4(); } })。開始(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts.test4(); } })。開始(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 ボイドラン(){ // TODO自動生成方法スタブ TestSyn.test4()。 } })。開始(); } プライベート 静的 無効tst5(){ TestSyn TS1 = 新しいTestSyn(); TestSyn TS2 = 新しいTestSyn(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts1.test2(); } })。開始(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts2.test3(); } })。開始(); } プライベート 静的 無効tst4(){ TestSyn TS = 新しいTestSyn(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts.test2(); } })。開始(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts.test3(); } })。開始(); } プライベート 静的 無効TST3(){ TestSyn TS = 新しいTestSyn(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts.test1(); } })。開始(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts.test2(); } })。開始(); } プライベート 静的 無効TST2(){ TestSyn TS = 新しいTestSyn(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts.test2(); } })。開始(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts.test2(); } })。開始(); } プライベート 静的 無効TST1(){ TestSyn TS = 新しいTestSyn(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts.test1(); } })。開始(); 新しいスレッド(新しいRunnableを(){ @オーバーライド 公共 のボイドの実行(){ ts.test1(); } })。開始(); } }