日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java 正確終止線程的方法

瀏覽:15日期:2022-08-20 09:51:02

Thread類中有一個已經廢棄的 stop() 方法,它可以終止線程,但由于它不管三七二十一,直接終止線程,所以被廢棄了。比如,當線程被停止后還需要進行一些善后操作(如,關閉外部資源),使用這個方法就無能為力了。可以通過線程中斷來實現線程終止。

首先來看一下Java線程中斷的一些內容:

Java平臺為每個線程維護了一個布爾型的中斷標記,可以通過下列方法獲取該標記的值:

interrupt() 中斷某個線程 isInterrupted() 返回該線程的中斷標記 interrupted() 返回并重置該線程的中斷標記(置為false)

中斷僅是發起線程對目標線程的一種請求,也就是說,目標線程對這種請求可以相應,也可以忽略。 Java標準庫中與線程阻塞相關的方法對中斷的相應方式都是拋出 InterruptedException 異常,并且按照慣例,拋出異常前都會重置中斷標記為false,因此這些方法會清空線程的中斷標記。 Java標準庫中與線程阻塞相關的方法在進行阻塞前會判斷中斷標記是否為true,為true則拋出異常;如果在阻塞后調用中斷方法的話,那么JVM會設置該線程的中斷標記,然后將該線程喚醒,因此中斷具有喚醒線程的作用。

由上面幾點和第二句加粗的話可知,可以使用線程中斷來實現線程終止,只要目標線程判斷一下中斷標記即可,即使被中斷的線程正處于阻塞狀態,也能把他喚醒起來終止;由第一句加粗的話可知,直接使用線程中斷實現線程終止是存在風險的,因為可能調用了一些Java標準庫的阻塞方法,而導致了中斷標記被清空,也就無法獲得中斷標記了(總是false),因此需要自己創建一個中斷標記配合使用。

如,下面是一個可中斷的任務執行器,他會在每次執行任務前,判斷一下自定i的終止標記和剩余的任務數(善后);提供的shutdown方法除了將工作線程中斷外(主要作用是喚醒可能處于阻塞狀態的任務),還會將終止交集 terminated 置為 true。

執行 main 方法,可以發現,首先會打印出“客戶端調用了 shutdown 方法”,然后過了四秒,main線程才會終止,可知shutdown方法正確地將目標線程終止了。關于“按照慣例,Java標準庫中拋出InterruptedException異常的和線程相關的阻塞方法會清空中斷標記”,可以將條件中的 !interminated 替換成 !Thread.currentThread().isInterrupted(),然后再執行main方法測試,可以發現main線程始終無法終止,因為 sleep() 方法清空了中斷標記,所以 !Thread.currentThread().isInterrupted() 始終為true,導致工作線程始終無法終止。

public class TerminableTaskRunner { // 存儲要執行的任務 private final BlockingQueue<Runnable> tasks; // 線程終止標志 private volatile boolean terminated; // 剩余的任務數 private final AtomicInteger count; // 實際執行任務的線程 private volatile Thread workThread; public TerminableTaskRunner(int capacity) {this.tasks = new LinkedBlockingDeque<>(capacity);this.count = new AtomicInteger(0);this.workThread = new WorkThread();workThread.start(); } public void submit(Runnable task) {this.tasks.add(task);this.count.incrementAndGet(); } public void shutdown() {terminated = true; // 線程終止標志,由于中斷標志可能會被覆蓋,所以需要自己創建一個標志if (workThread != null) workThread.interrupt(); // 喚醒線程 } private class WorkThread extends Thread {@Overridepublic void run() { Runnable task; try {while (!terminated || tasks.size() >= 1) { task = tasks.take(); try {task.run(); // 可能會清空當前線程的中斷標記,如task.run()在內部調用的阻塞方法拋出了InterruptedException } catch (Throwable e) {e.printStackTrace(); } count.decrementAndGet();} } catch (InterruptedException e) {// 一旦調用shutdown且tasks.take()阻塞住,就拋出該異常,沒有任務要執行,直接終止workThread = null; }} } public static void main(String[] args) {TerminableTaskRunner taskRunner = new TerminableTaskRunner(4);for (int i = 0; i < 4; i++) { taskRunner.submit(()->{try { TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) { System.out.println('客戶端調用了 shutdown 方法');} });}taskRunner.shutdown(); }}

以上就是Java 正確終止線程的方法的詳細內容,更多關于Java 終止線程的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久免费高清| 欧美在线综合| 秋霞国产精品| 欧美一区不卡| 欧美亚洲一区二区三区| 国产一区二区精品| 日韩中文av| 欧美日韩视频免费看| 美女福利一区二区三区| 在线综合亚洲| 亚洲午夜免费| 日本va欧美va瓶| www在线观看黄色| 精品精品国产三级a∨在线| 鲁鲁在线中文| 亚洲国产成人二区| 婷婷精品在线观看| 国产欧美啪啪| 国产一区清纯| 欧美三级第一页| 成人精品高清在线视频| 亚洲成人一区| 日韩三级久久| 99久久99久久精品国产片果冰| 久久不射网站| 欧美日韩国产v| 午夜精品免费| 亚洲天堂久久| 亚洲精品美女| 久久久久久久久久久妇女 | 国产九九精品| 久久精品理论片| 中文无码日韩欧| 欧美日本精品| 欧美性感美女一区二区| 在线 亚洲欧美在线综合一区| 国产精品久久观看| 蜜臀久久99精品久久久久宅男| 国产aa精品| 91嫩草亚洲精品| 欧美激情久久久久久久久久久| 久久福利精品| 欧美视频久久| 亚洲小说春色综合另类电影| 久久久影院免费| 国产一区二区精品久| 久久国产中文字幕| 日本精品在线播放| av不卡在线看| 肉色欧美久久久久久久免费看| 久久久夜夜夜| 日韩精品欧美大片| 日本aⅴ亚洲精品中文乱码 | 欧美片第1页综合| 91嫩草亚洲精品| 国产精品观看| 日本午夜精品久久久久| 日韩在线观看一区二区| 亚洲一区欧美二区| 精品99在线| 久久av免费看| 麻豆91精品91久久久的内涵| 国产欧美日韩一级| 91亚洲国产| 国产精品久久久久蜜臀| 国产欧美丝祙| 国产精品毛片一区二区三区| 另类综合日韩欧美亚洲| 中文无码日韩欧| 男人的天堂亚洲一区| 国产一区成人| 丝袜a∨在线一区二区三区不卡| 美女免费视频一区| 国产不卡一区| 国产精品一区二区中文字幕| 欧美一区二区三区高清视频| 精品国产乱码久久久久久樱花| 亚洲欧美网站在线观看| 国产亚洲精品精品国产亚洲综合 | 老色鬼久久亚洲一区二区| 国产精品啊v在线| 欧美日韩一区自拍| 四虎成人精品一区二区免费网站| 九九综合在线| 伊人精品一区| 中文字幕在线视频网站| 国产成人久久精品一区二区三区| 美美哒免费高清在线观看视频一区二区| 成人av动漫在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 一区二区三区四区日韩| 国产欧美精品| 国产一区二区三区探花| 久久麻豆精品| 成人av二区| 色爱av综合网| 麻豆成全视频免费观看在线看| 国产亚洲精品美女久久| 日韩免费福利视频| 亚洲一区免费| 国产精品久久久免费| 久久青草久久| 蜜臀久久99精品久久久久宅男| 国产日产高清欧美一区二区三区| 欧美13videosex性极品| 成人台湾亚洲精品一区二区| 精品在线播放| 日韩精品午夜视频| 日韩久久精品| 久久av一区| 石原莉奈在线亚洲三区| 精品久久久久久久| 视频一区二区国产| 狂野欧美性猛交xxxx| 亚洲欧美日本国产专区一区| 久久黄色影视| 在线视频亚洲| 欧美激情视频一区二区三区在线播放| 裤袜国产欧美精品一区| 亚洲国产影院| 国产精品chinese| 亚洲激情精品| 国产精品调教视频| 天堂av在线| 久久青青视频| 亚洲精选91| 国产精品蜜芽在线观看| 中文字幕av亚洲精品一部二部| 日本欧美一区二区| 国产福利一区二区精品秒拍 | 99re国产精品| 欧美国产极品| 国产午夜精品一区二区三区欧美 | 日韩视频一区| 精品72久久久久中文字幕| 日韩啪啪电影网| 免费的成人av| 欧美激情麻豆| 夜夜精品视频| 国产精区一区二区| 日韩精品乱码av一区二区| 精品国产亚洲一区二区三区| 免费精品视频最新在线| 久久九九电影| 美女视频免费精品| 1000部精品久久久久久久久| 精品午夜av| 91精品福利观看| 99国产精品视频免费观看一公开 | 亚洲精品小说| 你懂的亚洲视频| 婷婷久久一区| 久久久人人人| 国产一区精品福利| 欧美日韩精品在线一区| 亚洲香蕉久久| 国产亚洲电影| 国产一区二区中文| 国产日韩中文在线中文字幕| 欧美午夜精彩| 亚洲婷婷丁香| 日韩一区二区三区在线免费观看| 亚欧洲精品视频在线观看| 国产超碰精品| 国产精品一线天粉嫩av| 亚洲激情国产| 青青青免费在线视频| 日韩av影院| 国产亚洲精品久久久久婷婷瑜伽| 国际精品欧美精品| 青青草精品视频| 丝袜诱惑制服诱惑色一区在线观看| 中文字幕在线视频久| 国产精品夜夜夜| 亚洲精品国产精品粉嫩| 国产一区二区三区四区二区| 亚州av日韩av| 蘑菇福利视频一区播放| 久久精品中文| 成人午夜网址| 国产黄色精品| 日韩成人在线看| 免费看黄色91| 亚洲自拍另类| 欧美在线影院| а√在线中文在线新版| 国产伦精品一区二区三区在线播放| 一区二区国产精品| 国产麻豆综合| 亚洲欧美日韩高清在线| 国产一区二区精品久| 国产欧美日韩免费观看| 日韩欧美美女在线观看| 天使萌一区二区三区免费观看| 欧美日韩在线播放视频| 国产美女高潮在线观看| 久久久免费人体| 国产精品片aa在线观看 | 神马久久午夜| 国产成人免费|