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

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

我需要清理 Java 中的 Thread 對(duì)象嗎?

我需要清理 Java 中的 Thread 對(duì)象嗎?

拉丁的傳說 2023-10-12 16:54:31
在我的 Java 應(yīng)用程序中,我有一個(gè) Runnable,例如:this.runner = new Runnable({    @Override    public void run() {        // do something that takes roughly 5 seconds.    }});我需要大約每 30 秒在一個(gè)單獨(dú)的線程中運(yùn)行一次(盡管這可能會(huì)有所不同)。代碼的本質(zhì)是我可以運(yùn)行它并忘記它(無論它成功還是失敗)。我在應(yīng)用程序中將其作為一行代碼執(zhí)行,如下所示:(new Thread(this.runner)).start()現(xiàn)在,這工作正常。但是,我想知道在每個(gè)線程實(shí)例完成運(yùn)行后是否應(yīng)該對(duì)其進(jìn)行任何類型的清理?我正在對(duì)這個(gè)應(yīng)用程序進(jìn)行 CPU 分析VisualVM,我可以看到,在 1 小時(shí)的運(yùn)行時(shí)間過程中,創(chuàng)建了很多線程。這種擔(dān)憂是否有效,或者一切都好嗎?new Thread注意我開始 a而不是簡(jiǎn)單地定義this.runner為 a的原因Thread是,我有時(shí)需要this.runner同時(shí)運(yùn)行兩次(在第一次運(yùn)行調(diào)用完成之前),如果我定義this.runner為 a ,我就不能這樣做Thread,因?yàn)閱蝹€(gè)Thread對(duì)象只能初始執(zhí)行完成后再次運(yùn)行。
查看完整描述

2 回答

?
忽然笑

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

使用后需要“清理”或“關(guān)閉”的Java對(duì)象通常實(shí)現(xiàn)該AutoCloseable接口。這使得使用try-with-resources可以輕松地進(jìn)行清理。該類Thread沒有實(shí)現(xiàn)AutoCloseable,并且沒有“close”或“dispose”方法。因此,您不需要進(jìn)行任何顯式清理。

然而

(new?Thread(this.runner)).start()

不保證立即開始 的計(jì)算Runnable。您可能不關(guān)心它是成功還是失敗,但我想您確實(shí)關(guān)心它是否運(yùn)行。您可能希望限制同時(shí)運(yùn)行的這些任務(wù)的數(shù)量。例如,您可能只想一次運(yùn)行一個(gè)。所以你可能想要join()線程(或者,也許,加入超時(shí))。加入線程將確保線程完成其計(jì)算。以超時(shí)方式加入線程會(huì)增加線程開始計(jì)算的機(jī)會(huì)(因?yàn)楫?dāng)前線程將被掛起,從而釋放可能運(yùn)行其他線程的 CPU)。

但是,不建議創(chuàng)建多個(gè)線程來執(zhí)行常規(guī)或頻繁任務(wù)。您應(yīng)該將任務(wù)提交到線程池。這將使您能夠控制最大并發(fā)量,并且可以為您提供其他好處(例如區(qū)分不同任務(wù)的優(yōu)先級(jí)),并分?jǐn)倓?chuàng)建線程的費(fèi)用。

您可以將線程池配置為使用固定長(zhǎng)度(有界)任務(wù)隊(duì)列,并讓提交線程在隊(duì)列已滿時(shí)自行執(zhí)行已提交的任務(wù)。通過這樣做,您可以保證提交到線程池的任務(wù)(最終)被執(zhí)行。的文檔ThreadPool.execute(Runnable)說明了這一點(diǎn)

在將來的某個(gè)時(shí)間執(zhí)行給定的任務(wù)

這表明該實(shí)現(xiàn)保證它最終會(huì)運(yùn)行所有提交的任務(wù),即使您不執(zhí)行這些特定任務(wù)以確保執(zhí)行提交的任務(wù)。


查看完整回答
反對(duì) 回復(fù) 2023-10-12
?
慕村225694

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

我建議您查看并發(fā) API。有許多預(yù)定義的通用方法。通過使用 ExecutorService,您可以在向執(zhí)行器提交任務(wù)后調(diào)用 shutdown 方法,該方法會(huì)停止接受新任務(wù),等待之前提交的任務(wù)執(zhí)行,然后終止執(zhí)行器。

查看完整回答
反對(duì) 回復(fù) 2023-10-12
  • 2 回答
  • 0 關(guān)注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報(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)