您好,登錄后才能下訂單哦!
現有3個線程thread1, thread2, thread3。這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 }
我們回到APP上,在APP啟動時,我們會先啟動Splash,會在Splash中做一些預加載。那么由于網速等等原因,導致預加載的時間不太固定。那么我們既不希望他加載的過快,會導致頁面的存在感不強;也不希望加加載過慢,誤以為“卡死”。那么我們就需要設置一個最小加載時間和最大加載時間。那么如何時間呢?
nbTemp = 0 Thread thread1 = Thread( Thread thread2 = Thread( Thread thread3 = Thread( nbTemp ++ finish(); }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。