day25 Javaのマルチスレッドの学習

 マルチスレッド(単一の設計パターン:*マスター)

    シングルトンデザインパターン:メモリ内の保証1つのオブジェクトのみ。

     怠惰と空腹中国風のスタイルの違い:

         *時間のために飢え1の空間は、怠惰な人間は宇宙のための時間です。(使用の怠惰推奨しません)

         *マルチスレッドアクセス2.、飢えた男は、複数のオブジェクト・タイプを作成していない、と怠惰な人間は、複数のオブジェクトを作成する可能性があります。

      3つは別々の書かれました:

/ * 
 *式飢え
 * / 
クラスシングルトン{
     // 1.プライベートコンストラクタを、他のクラスは、クラスのコンストラクタにアクセスできる
    プライベートシングルトン(){};
     // 2本のクラスオブジェクト作成
    プライベート  静的シングルトン= S 新しい新しい(シングルトン);   // メンバ変数は、クラス名を呼び出すことができない、プライベートシングルトンsである。
     @ 3の一般的な方法への外部アクセスを提供する
    公共の 静的シングルトンのgetInstance(){        // インスタンス取得
        戻りSを;         
    }         
} 

/ * 
 *怠惰式:単例えば遅延ロードモード(使用しないシングルモード、それが複数のオブジェクトを作成することが可能であるため)
 * / 
クラスをシングルトン{
     // 1.プライベートコンストラクタを、他のクラスは、クラスのコンストラクタがアクセス可能な
    プライベートシングルトン(){};
     // 2.宣言参照
    プライベート 静的シングルトンS;
     // 3パブリックアクセス方法は、外部提供
    パブリック 静的シングルトンのgetInstanceを(){        // 取得例
      IF(S == NULL ){ 
         S = 新しい新シングルトン(); 
           } 
        戻りS;         
    }         
} 
/ * 
 *第
 * / 
クラスシングルトン{
     // 1.プライベートコンストラクタ、他のクラスは、クラスのコンストラクタにアクセスできる
    プライベート(){}シングルトン;
     // 2本の作成しますクラスObject 
    パブリック 静的 決勝S =シングルトン新しい新しいシングルトン();   // さらに最終秒後に変更することはできません
    
}
シングルのデザインパターン

 

  マルチスレッド(ランタイムクラス)

     ランタイムクラスはシングルトンです。

    パブリック 静的 ボイドメイン(文字列[]引数)がスローにIOException {
         // 同じオブジェクトをシャットダウンを操作 
   ランタイム= R&LT Runtime.getRuntimeを();    // オブジェクトのランタイム得る 
   r.execを( "シャットダウン300 -t -s");       / / 変性 
   r.exec(「シャットダウン-a」);              // に従ってオブジェクトを変更します 
    }

 

  マルチスレッド(タイマーカテゴリ:*マスター)

      Timerクラス:タイマー。

パブリック クラスDome3_Timer { 

    公共の 静的な 無効メイン(文字列[] argsが)スローInterruptedExceptionある{ 
       
        タイマーT = 新しい新しい ;タイマーを()      //は、タイマーを作成します
         // 指定されたタイムスケジュールでタスクを指定:スケジュールを()。
        // 最初のパラメータが指定されたタスクであり、2番目のパラメータは実行時である、第三のパラメータが長すぎる繰り返し実行され 
        t.schedule(新しい新しい MyTimer()への新たな新しい日付(119 ,. 5 ,. 6,0 、57は、0 4)、2000 )、
            一方、真の){ 
               のThread.sleep( 1000年); 
            のSystem.out.println(新しい新しい日付())。
        }
    } 

} 

クラス MyTimerは延びTimerTaskを{ 

    @Override 
    公共 ボイドラン(){ 
        
        System.out.printlnは( "起来读书を" )。    
    }     
}
スケジュール()

 

マルチスレッド(2つのスレッド間通信:*マスター)

1.とき、私は通信が必要なのです。

       *複数のスレッドを同時に、デフォルトでCPUランダムスレッド切り替えを実行します。

       *我々は、彼らが定期的に実行する必要がしたい場合は、通信を使用することができます。

2.どのようにコミュニケーション:

       *待ち():現在のスレッドの待機

       *)(通知:ウェイクアップシングルランダム待機中のスレッド

       *これらの2つの方法は、同期コードで実行する必要があり、同期ロックは、オブジェクトを呼び出すために使用されます。

パブリック クラスDome1_Notify { 

    公共 静的 ボイドメイン(文字列[]引数){
     最終的な   プリンタP = 新しいプリンター();
    新しいスレッド(){
           公共 ボイドラン(){
               ながら、){
               試み{ 
                p.print1(); 
            } キャッチ(InterruptedExceptionある電子){
                 // TODO自动生成的キャッチ块
                e.printStackTrace(); 
            } 
          }       
          } 
      } .start(); 
       
      
      新しいスレッド(){
           公共 ボイドRUN(){
               ながら、真の){
               試み{ 
                p.print2(); 
            } キャッチ(InterruptedExceptionあるE){
                 // catchブロックのTODO自動生成された
                e.printStackTrace(); 
            } 
          }       
          } 
      } .start (); 
    } 

} 
// 待機ウェイクアップ機構の
クラスプリンタ{
     プライベート  int型フラグに= 1 ;
     公共 ボイド PRINT1()はスロー{InterruptedExceptionある
         同期){
             IF(フラグに= 1。!){
                 この.WAIT(); 
            } 
                System.out.printの( "A" ); 
                System.out.print(の "B" ); 
                System.out.printの( "C" ); 
                System.out.printの( "\のR&LT \ N-" ); 
                でフラグ = 2 ;
                 この .notify();     // ランダムウェイクアップ待機単一スレッド
            } 
        } 

    
    公共 ボイド PRINT2を()スローInterruptedExceptionある{
         同期これを){
             IF(FLAG = 2で!){
                 この .WAIT();      // this.wait():現在のスレッドが待機する
            } 
            System.out.printの( "D" ); 
            System.out.printの( "E" ); 
            System.out.printの( "F" ); 
            System.out.printの( "\のR&LT \ N-" ); 
            フラグに = 1 ;
             この .notify();           // this.notify():ランダムシングルスレッドの待機を覚まします
             }            
} 
}

 

  

 

おすすめ

転載: www.cnblogs.com/feng0001/p/10982871.html