溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

預處理線程問題解決方案

發(fā)布時間:2020-06-11 02:46:04 來源:網(wǎng)絡 閱讀:584 作者:lzwxx 欄目:開發(fā)技術

問題描述:

       現(xiàn)有3個線程thread1, thread2, thread3。這3個線程是并發(fā)執(zhí)行的,當著3個線程都執(zhí)行完成以后,需要執(zhí)行一個finish()事件。

 

實現(xiàn)方法:

預處理線程問題解決方案

 1 /** 定義一個靜態(tài)標記 **/ 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(); // 條件達成,執(zhí)行finish();40     }41 }

預處理線程問題解決方案

 

我們回到APP上,在APP啟動時,我們會先啟動Splash,會在Splash中做一些預加載。那么由于網(wǎng)速等等原因,導致預加載的時間不太固定。那么我們既不希望他加載的過快,會導致頁面的存在感不強;也不希望加加載過慢,誤以為“卡死”。那么我們就需要設置一個最小加載時間和最大加載時間。那么如何時間呢?

預處理線程問題解決方案

     nbTemp = 0                       Thread thread1 =  Thread(                                     Thread thread2 =  Thread(                                     Thread thread3 =  Thread(                                                                                                                                                                                                                       nbTemp ++                                                                     finish();   }


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI