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

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

Java判斷線程池線程是否執行完畢

瀏覽:26日期:2022-09-01 10:18:32

在使用多線程的時候有時候我們會使用 java.util.concurrent.Executors的線程池,當多個線程異步執行的時候,我們往往不好判斷是否線程池中所有的子線程都已經執行完畢,但有時候這種判斷卻很有用,例如我有個方法的功能是往一個文件異步地寫入內容,我需要在所有的子線程寫入完畢后在文件末尾寫“---END---”及關閉文件流等,這個時候我就需要某個標志位可以告訴我是否線程池中所有的子線程都已經執行完畢,我使用這種方式來判斷。

public class MySemaphore { public static void main(String[] args) throws IOException, InterruptedException { final File stream = new File('c:tempstonefengstream.txt'); final OutputStream os = new FileOutputStream(stream); final OutputStreamWriter writer = new OutputStreamWriter(os); final Semaphore semaphore = new Semaphore(10); ExecutorService exec = Executors.newCachedThreadPool(); final long start = System.currentTimeMillis(); for (int i = 0; i < 10000000; i++) { final int num = i; Runnable task = new Runnable() {@Overridepublic void run() { try { semaphore.acquire(); writer.write(String.valueOf(num)+'n'); semaphore.release(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); }} }; exec.submit(task); } exec.shutdown(); while(true){ if(exec.isTerminated()){writer.write('---END---n');writer.close();System.out.println('所有的子線程都結束了!');break; } Thread.sleep(1000); } final long end = System.currentTimeMillis(); System.out.println((end-start)/1000); }}

當調用ExecutorService.shutdown方法的時候,線程池不再接收任何新任務,但此時線程池并不會立刻退出,直到添加到線程池中的任務都已經處理完成,才會退出。在調用shutdown方法后我們可以在一個死循環里面用isTerminated方法判斷是否線程池中的所有線程已經執行完畢,如果子線程都結束了,我們就可以做關閉流等后續操作了。

判斷線程池中的線程是否全部執行完畢的另外一種解決方案則是使用閉鎖(CountDownLatch)來實現,CountDownLatch是一種靈活的閉鎖實現,它可以使一個或多個線程等待一組事件發生。閉鎖狀態包括一個計數器,該計數器被初始化為一個正數,表示需要等待的事件數量。countDown方法遞減計數器,表示有一個事件已經發生了,而await方法等待計數器達到零,即表示需要等待的事情都已經發生。可以使用閉鎖來這樣設計程序達到目的:

public class CountDownLatchApproach { public static void main(String[] args) throws IOException, InterruptedException { final int nThreads = 10; final CountDownLatch endGate = new CountDownLatch(nThreads); final File stream = new File('c:tempstonefengstream.txt'); final OutputStream os = new FileOutputStream(stream); final OutputStreamWriter writer = new OutputStreamWriter(os); ExecutorService exec = Executors.newCachedThreadPool(); for (int i = 0; i < nThreads; i++) { final int num = i; Runnable task = new Runnable() {@Overridepublic void run() { try { writer.write(String.valueOf(num)+'n'); } catch (IOException e) { e.printStackTrace(); } finally { endGate.countDown(); }} }; exec.submit(task); } endGate.await(); writer.write('---END---n'); writer.close(); }}

這種解決方案雖然可以達到目的但是性能差到沒朋友,我更傾向于使用第一種方案。

現在我們有了更優雅的第三種方案,它的執行性能也不錯。

public class MySemaphore { public static void main(String[] args) throws IOException, InterruptedException { final File stream = new File('c:tempstonefengstream.txt'); final OutputStream os = new FileOutputStream(stream); final OutputStreamWriter writer = new OutputStreamWriter(os); final Semaphore semaphore = new Semaphore(10); ExecutorService exec = Executors.newCachedThreadPool(); final long start = System.currentTimeMillis(); for (int i = 0; i < 10000000; i++) { final int num = i; Runnable task = new Runnable() {@Overridepublic void run() { try { semaphore.acquire(); writer.write(String.valueOf(num)+'n'); semaphore.release(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); }} }; exec.submit(task); } exec.shutdown(); exec.awaitTermination(1, TimeUnit.HOURS); writer.write('---END---n'); writer.close(); System.out.println('ËùÓеÄ×ÓÏ̶߳¼½áÊøÁË£¡'); final long end = System.currentTimeMillis(); System.out.println((end-start)/1000); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久伊人久久| 91精品xxx在线观看| 亚洲先锋成人| 亚洲成人va| 亚洲精品一区三区三区在线观看| 给我免费播放日韩视频| 久久精品国产精品亚洲毛片| 久久中文欧美| 国产成人a视频高清在线观看| 久久男人av| 欧美亚洲日本精品| 香蕉成人av| 一区二区自拍| 亚洲一区二区日韩| 日韩美女精品| 国产精品极品| www在线观看黄色| 欧美中文一区二区| 在线综合亚洲| 亚洲精品美女91| 日韩激情网站| 欧美国产极品| 亚洲伦乱视频| 日韩视频一区二区三区在线播放免费观看| 鲁大师成人一区二区三区| 亚洲精品美女| 免费日韩成人| 99精品视频在线| 日韩中文字幕区一区有砖一区| 亚洲ww精品| 国产一区二区三区四区五区传媒| 久久久久国产精品一区二区| 日韩中文字幕亚洲一区二区va在线 | 亚欧成人精品| 国产精品一区二区精品视频观看 | 美女久久网站| 国产精品伦一区二区| 久久久久久一区二区| 亚洲午夜久久久久久尤物| 免播放器亚洲| 国产精品男女| 久久在线电影| 日韩高清欧美激情| 久久毛片亚洲| 亚洲网址在线观看| 精品久久美女| 国产精品毛片在线看| 国产欧美欧美| 亚洲午夜黄色| 日韩va欧美va亚洲va久久| 精品久久久久久久| 亚洲激情二区| 国产福利资源一区| 日韩午夜电影| 麻豆精品一区二区综合av| 亚洲成av人片一区二区密柚| 日本成人在线视频网站| 蜜桃av在线播放| 日本一区二区三区视频在线看| 福利一区二区| 日韩亚洲精品在线观看| 亚洲va中文在线播放免费| 日本vs亚洲vs韩国一区三区二区| 色爱av综合网| 国产精品115| 免费欧美日韩| 国产a亚洲精品| 婷婷综合电影| 999国产精品999久久久久久| 日韩av在线免费观看不卡| 亚洲高清激情| 久久久久97| 日精品一区二区三区| 波多野结衣久久精品| 四虎成人精品一区二区免费网站| 色网在线免费观看| 97久久中文字幕| 伊人久久亚洲热| 国产专区精品| 欧美午夜三级| 亚洲一区二区三区四区五区午夜| 国内精品美女在线观看| 日韩福利视频一区| 亚洲欧美日本视频在线观看| 中文在线资源| **爰片久久毛片| 亚洲一区二区毛片| 久久精品中文| 色婷婷综合网| 国产高清视频一区二区| 热久久国产精品| 欧美特黄一级大片| 国产 日韩 欧美 综合 一区| 国产精品一国产精品k频道56| 中文一区二区| 91精品国产调教在线观看| 久久精品福利| 欧美日韩一区二区三区四区在线观看 | 青草综合视频| 韩日一区二区三区| 日韩一区自拍| 久久精品国产久精国产爱| 日本视频一区二区| 亚洲色图综合| 视频一区免费在线观看| 91久久视频| 精品欧美激情在线观看| 中文在线免费视频| 福利一区二区三区视频在线观看| 国产福利一区二区精品秒拍 | 日本一区中文字幕| 亚洲一区二区毛片| 国产视频亚洲| 欧美日韩精品一本二本三本| 亚洲视频综合| 亚洲天堂1区| 久久久精品五月天| 少妇精品导航| 四虎影视精品| 亚洲无线一线二线三线区别av| 99成人在线视频| 九一精品国产| 日韩视频在线一区二区三区 | 石原莉奈一区二区三区在线观看| 亚洲精品中文字幕乱码| 999国产精品永久免费视频app| 久久天堂精品| 亚洲午夜黄色| 日韩视频一区二区三区在线播放免费观看| 欧美成人综合| 久久高清免费| 欧美色图一区| 欧美日韩精品一本二本三本 | 日本不卡视频在线观看| 日韩精品中文字幕一区二区| 日韩精品欧美大片| 国产丝袜一区| 麻豆精品99| 国产不卡人人| 美女少妇全过程你懂的久久| 婷婷六月综合| 欧美综合二区| 日韩欧美激情| 久久精品伊人| 成人日韩在线观看| 在线视频观看日韩| 欧美精品激情| 亚洲精品乱码久久久久久蜜桃麻豆| 日韩欧美高清一区二区三区| 国产精品99久久免费| 色偷偷色偷偷色偷偷在线视频| 国产高清一区| 午夜亚洲福利| 免费在线观看一区| 国产精品字幕| 美女黄网久久| 国产精品日韩精品中文字幕| 久久久久久一区二区| 91精品1区| 日韩精品中文字幕一区二区| 精品国产黄a∨片高清在线| 中文在线免费视频| 亚洲尤物在线| 国产精品视频首页| 色婷婷精品视频| 亚洲久久视频| 国内精品亚洲| 在线视频精品| 91成人福利| 美女av在线免费看| 日本欧洲一区二区| 久久这里只有精品一区二区| 婷婷丁香综合| 国产日韩欧美一区二区三区 | 亚洲日本三级| 成人综合一区| 久久电影一区| 国产欧美高清视频在线| 人在线成免费视频| 亚洲精品高潮| 日韩在线中文| 亚洲综合小说| 国产精品久久久久久久久久10秀| 亚洲欧美日本视频在线观看| 国产精品自拍区| 欧美69视频| 欧美激情五月| 国产农村妇女精品一二区| 精品视频自拍| 一区二区电影在线观看| 日本欧美国产| 亚洲精品福利| 91一区二区三区四区| 亚洲天堂日韩在线| 欧美aa一级| 国产日韩精品视频一区二区三区| 成人av二区| 国产一区二区三区网| 日韩三级视频| 亚洲精品网址|