スレッドの同期テスト

パブリック クラス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();
            }
        })。開始();
    }
}

 

おすすめ

転載: www.cnblogs.com/lightandtruth/p/11944509.html
おすすめ