Javaスレッド - デッドロック

デッドロック

   セキュリティの問題を解決するためのJavaスレッドの同期メカニズムが、また、デッドロックにつながりました

デッドロックの現象の根本原因

    1.2つ以上のスレッドが存在する。
    2.2つまたは複数の共有リソースが存在します。

デッドロックの問題への解決策

   いいえプログラムは、唯一それを回避しようとしません。

 

例:

パッケージjd1908_corejava.ch17。

パブリック クラスデッドロック{
     // 
    パブリック 静的オブジェクトA = 新しいオブジェクト();
    // 锁B 
    のパブリック 静的オブジェクトB = 新しいオブジェクト(); 

    パブリック 静的 ボイドメイン(文字列[]引数){ 
        T1をT1 = 新しいT1()。
        T2はT2 = 新しいT2()。
        t1.start(); 
        t2.start(); 
    } 
} 

クラス T1は延びスレッド{ 
    @Overrideを
    公共 ボイドラン(){
         同期(DeadLock.A){ 
            System.out.printlnは( "A" );
            同期(DeadLock.B){ 
                するSystem.out.println( "核心代码T1" )。
            } 
        } 
    } 
} 

クラス T2が延びスレッド{ 
    @Override 
    公共 ボイドラン(){
         同期(DeadLock.B){ 
            System.out.printlnは( "\ TBを" )。
            同期(DeadLock.A){ 
                System.out.printlnは("コアコードT2" ); 
            } 
        } 
    } 
}

結果:


    B

 

おすすめ

転載: www.cnblogs.com/fyscn/p/11361928.html