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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

如何優(yōu)雅地停止java線程?我寫(xiě)了一個(gè)線程,它需要太多的時(shí)間來(lái)執(zhí)行,而且它似乎還沒(méi)有完全完成。我想優(yōu)雅地阻止這條線。有什么幫助嗎?
查看完整描述

3 回答

?
慕尼黑的夜晚無(wú)繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

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

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

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

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

假設(shè)我想編寫(xiě)一個(gè)確實(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();
        }
    }}

下面是一個(gè)類似問(wèn)題的答案,包括示例代碼。


查看完整回答
反對(duì) 回復(fù) 2019-07-15
?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊

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

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


查看完整回答
反對(duì) 回復(fù) 2019-07-15
  • 3 回答
  • 0 關(guān)注
  • 1016 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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