如何保證線程按照指定次序執行-newSingleThreadExecutor線程池

      網友投稿 763 2022-05-30

      在上一篇文章《如何保證線程按照指定次序執行-Thread.join》中,介紹了如何通過Thread.join()函數實現多個線程按照指定次序執行,今天我們來看另一種方式,通過線程池的方式來實現。

      首先來看基礎的例子:

      public class ThreadPoolTest { public static void main(String[] args) { Thread A = new Thread(() -> System.out.println("A")); Thread B = new Thread(() -> System.out.println("B")); Thread C = new Thread(() -> System.out.println("C")); A.start(); B.start(); C.start(); } }

      上述代碼無法保證程序的執行順序,我們引入線程池。使用newSingleThreadExecutor方法。

      newSingleThreadExecutor的官方釋義如下:

      public static ExecutorService newSingleThreadExecutor()

      創建一個使用從無界隊列運行的單個工作線程的執行程序。 (請注意,如果這個單個線程由于在關閉之前的執行過程中發生故障而終止,則如果需要執行后續任務,則新的線程將占用它。)任務保證順序執行,并且不超過一個任務將被激活在任何給定的時間。 與其他等效的newFixedThreadPool(1) 、newFixedThreadPool(1) ,返回的執行器保證不被重新配置以使用額外的線程。

      我們來看看實際編程運行的效果。

      實現代碼:

      public class ThreadPoolTest { public static void main(String[] args) throws InterruptedException { Thread A = new Thread(() -> System.out.println("A")); Thread B = new Thread(() -> System.out.println("B")); Thread C = new Thread(() -> System.out.println("C")); ExecutorService pool = Executors.newSingleThreadExecutor(); pool.submit(A); pool.submit(B); pool.submit(C); pool.shutdown(); } }

      運行結果:

      根據文檔,我們可以知道,還可以用newFixedThreadPool(1) 或者newFixedThreadPool(1) ,結果是一樣的。

      另外,線程池我們最常用的一個函數是execute(Runnable command),在本例測試用,發現使用execute時,也能達到同樣的效果,那么submit與execute有什么區別呢?

      execute是接口Executor的方法,其含義為:

      void execute(Runnable command)

      在將來的某個時間執行給定的命令。 該命令可以在一個新線程,一個合并的線程中或在調用線程中執行,由Executor實現。

      而submit是接口ExecutorService的方法,其含義為:

      Future submit(Runnable task)

      如何保證線程按照指定次序執行-newSingleThreadExecutor線程池

      提交一個可運行的任務執行,并返回一個表示該任務的未來。 未來的get方法將返回null 成功完成時。

      通過newSingleThreadExecutor的隊列模式,從而保證了任務按照提交的順序來執行。

      任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【愚公系列】2021年12月 Python教學課程 31-Django框架虛擬環境的搭建
      下一篇:代碼重構:注釋(Comments)
      相關文章
      亚洲人成无码网站| 亚洲精品无码日韩国产不卡?V| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚洲夂夂婷婷色拍WW47| 亚洲H在线播放在线观看H| 亚洲av日韩av不卡在线观看| 亚洲精品成人无限看| 亚洲色精品aⅴ一区区三区| 在线观看国产区亚洲一区成人| 国产成人精品久久亚洲| 亚洲毛片av日韩av无码| 亚洲中文字幕伊人久久无码| 亚洲午夜精品久久久久久浪潮| 亚洲欧洲日产国码一级毛片| 91麻豆国产自产在线观看亚洲| 亚洲日韩aⅴ在线视频| 亚洲国产精品特色大片观看完整版| 国产精品亚洲成在人线| 久久精品国产亚洲AV网站| 亚洲VA中文字幕无码一二三区| 久久精品视频亚洲| 久久久久亚洲精品天堂| 亚洲欧洲中文日产| 亚洲综合色7777情网站777| 久久久久亚洲国产| 国产亚洲人成在线播放| 亚洲国产婷婷综合在线精品 | 亚洲AV成人一区二区三区观看| 亚洲高清毛片一区二区| 国产亚洲精品精品精品| 久久亚洲欧洲国产综合| 久久亚洲成a人片| 亚洲沟沟美女亚洲沟沟| 亚洲最大无码中文字幕| 国产精品亚洲专区无码唯爱网| 亚洲区日韩区无码区| 亚洲精品美女久久久久99| 亚洲第一视频网站| 亚洲午夜精品在线| 亚洲AV日韩AV永久无码色欲| 亚洲国产主播精品极品网红 |