前処理スレッドの問題解決策


問題の説明:


既存の3つのスレッドthread 1,thread 2,thread 3があります.この3つのスレッドは同時実行であり,3つのスレッドがすべて実行されるとfinish()イベントを実行する必要がある.
 

実装方法:

 1 /**   **/ 2 private static byte nbTemp = 0; 3  4 private void aa(){ 5     //  1 6     Thread thread1 = new Thread(new Runnable() { 7         @Override 8         public void run() { 9             // ...10             bb();11         }12     });13     //  214     Thread thread2 = new Thread(new Runnable() {15         @Override16         public void run() {17             // ...18             bb();19         }20     });21     //  322     Thread thread3 = new Thread(new Runnable() {23         @Override24         public void run() {25             // ...26             bb();27         }28     });29 30     thread1.start();31     thread2.start();32     thread3.start();33 }34 35 /**  : “synchronized”, bb()  */36 private synchronized void bb(){37     nbTemp ++;38     if(nbTemp == (byte)3) {39         finish(); //  , finish();40     }41 }

 
アプリに戻ります.アプリが起動すると、まずSplashを起動し、Splashでプリロードをします.では、ネットワーク速度などの理由で、プリロードの時間があまり固定されていません.では、彼のロードが速すぎて、ページの存在感が強くないことを望んでいません.加負荷が遅すぎて「カード死」と勘違いしたくない.では、最小ロード時間と最大ロード時間を設定する必要があります.では、どのような時間ですか.
     nbTemp = 0                       Thread thread1 =  Thread(                                     Thread thread2 =  Thread(                                     Thread thread3 =  Thread(                                                                                                                                                                                                                       nbTemp ++                                                                     finish();   }