第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

sleep()使用問題

感謝你無私的奉獻(xiàn),讓我了解到為什么不用不用stop(),推薦的標(biāo)志的方式。

我也想再問一句:為什么不使用sleep()呢。

? 1.我可以在方法中捕捉InterruptedException 時候 處理異常并且用ruturn;


? 2.我看到官方自帶的線程池Exceutor中的shutdownNow也是使用 interrupte()的如下:

java.util.concurrent.ThreadPoolExecutor中的

?private void interruptWorkers() {
??????? final ReentrantLock mainLock = this.mainLock;
??????? mainLock.lock();
??????? try {
??????????? for (Worker w : workers) {
??????????????? try {
??????????????????? w.thread.interrupt();
??????????????? } catch (SecurityException ignore) {
??????????????? }
??????????? }
??????? } finally {
??????????? mainLock.unlock();
??????? }
??? }

我看到網(wǎng)上是說 interrupte()不能中斷IO。





正在回答

1 回答

問題還是回到interrupte()方法的初衷,這個方法是用來向線程發(fā)出中斷請求,而非停止線程的。當(dāng)然很多時候要停止線程就需要先給他一個中斷請求,然后讓線程處理中斷(比如處理InterruptedException)。


在你提到的shutdownNow中,我們看到調(diào)用interruptWorkers()也是這個意思,讓所有的worker線程有機(jī)會處理中斷。緊接著,tryTerminate()回去做停止的工作。


public List<Runnable> shutdownNow() {

? ? ? ? List<Runnable> tasks;

? ? ? ? final ReentrantLock mainLock = this.mainLock;

? ? ? ? mainLock.lock();

? ? ? ? try {

? ? ? ? ? ? checkShutdownAccess();

? ? ? ? ? ? advanceRunState(STOP);

? ? ? ? ? ? interruptWorkers();

? ? ? ? ? ? tasks = drainQueue();

? ? ? ? } finally {

? ? ? ? ? ? mainLock.unlock();

? ? ? ? }

? ? ? ? tryTerminate();

? ? ? ? return tasks;

? ? }


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
深入淺出Java多線程
  • 參與學(xué)習(xí)       186071    人
  • 解答問題       498    個

帶你一起深入淺出多線程,掌握基礎(chǔ),展望進(jìn)階路線

進(jìn)入課程

sleep()使用問題

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號