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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問如何優(yōu)雅地停止java線程?

請問如何優(yōu)雅地停止java線程?

牧羊人nacy 2019-11-05 09:04:22
如何優(yōu)雅地停止java線程?我寫了一個線程,它需要太多的時間來執(zhí)行,而且它似乎還沒有完全完成。我想優(yōu)雅地阻止這條線。有什么幫助嗎?
查看完整描述

3 回答

?
FFIVE

TA貢獻1797條經(jīng)驗 獲得超6個贊

使用標(biāo)志停止線程的壞處在于,如果線程正在等待或處于休眠狀態(tài),則必須等待它完成等待/休眠。如果您調(diào)用線程上的中斷方法,那么這將導(dǎo)致等待或睡眠調(diào)用與InterruptedException一起退出。

(標(biāo)志方法的第二個缺點是,大多數(shù)非平凡的代碼都將使用java.util.current這樣的庫,其中的類是專門設(shè)計用來使用中斷來取消的。在傳遞給Executir的任務(wù)中使用手搖標(biāo)志將很尷尬。)

調(diào)用中斷()還設(shè)置一個中斷屬性,您可以使用該屬性作為標(biāo)志來檢查是否退出(在線程沒有等待或休眠的情況下)。

您可以編寫線程的Run方法,以便在線程正在執(zhí)行的循環(huán)邏輯之外捕獲InterruptedException,或者在循環(huán)中捕獲異常并接近拋出異常的調(diào)用,為InterruptedException在CATCH塊中設(shè)置中斷標(biāo)志,這樣線程就不會忘記它被中斷的事實。中斷的線程仍然可以根據(jù)自己的條件保持控制和完成處理。

假設(shè)我想編寫一個確實以增量方式工作的工作線程,其中由于某種原因在中間有睡眠,而且我不希望放棄睡眠以使處理退出而不為該增量執(zhí)行剩余的工作,我只希望它在增量之間的情況下退出:

class MyThread extends Thread{
    public void run()
    {
        while (!Thread.currentThread().isInterrupted())
        {
            doFirstPartOfIncrement();
            try {
                Thread.sleep(10000L);
            } catch (InterruptedException e) {
                // restore interrupt flag
                Thread.currentThread().interrupt();
            }
            doSecondPartOfIncrement();
        }
    }}

下面是一個類似問題的答案,包括示例代碼。



查看完整回答
反對 回復(fù) 2019-11-06
?
墨色風(fēng)雨

TA貢獻1853條經(jīng)驗 獲得超6個贊

你不應(yīng)該殺其他人的線。這被認(rèn)為是相當(dāng)壞的習(xí)慣。然而,有許多方法。你可以用return線程的語句run方法?;蛘?,您可以檢查線程是否已經(jīng)被中斷,然后它將取消它的工作。F.E.:

while (!isInterrupted()) { 
  // doStuff}


查看完整回答
反對 回復(fù) 2019-11-06
  • 3 回答
  • 0 關(guān)注
  • 332 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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