前処理スレッドの問題解決策
2122 ワード
問題の説明:
既存の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(); }