亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

深入java線程池的使用詳解

2020-01-26 16:12:12
字體:
來源:轉載
供稿:網友
在Java 5.0之前啟動一個任務是通過調用Thread類的start()方法來實現的,任務的提于交和執行是同時進行的,如果你想對任務的執行進行調度或是控制 同時執行的線程數量就需要額外編寫代碼來完成。5.0里提供了一個新的任務執行架構使你可以輕松地調度和控制任務的執行,并且可以建立一個類似數據庫連接 池的線程池來執行任務。這個架構主要有三個接口和其相應的具體類組成。這三個接口是Executor, ExecutorService、ScheduledExecutorService,讓我們先用一個圖來顯示它們的關系:

圖的左側是接口,圖的右側是這些接口的具體類。注意Executor是沒有直接具體實現的。
Executor接口:是用來執行Runnable任務的,它只定義一個方法:
•execute(Runnable command):執行Ruannable類型的任務
ExecutorService接口:ExecutorService繼承了Executor的方法,并提供了執行Callable任務和中止任務執行的服務,其定義的方法主要有:
•submit(task):可用來提交Callable或Runnable任務,并返回代表此任務的Future對象
•invokeAll(collection of tasks):批處理任務集合,并返回一個代表這些任務的Future對象集合
•shutdown():在完成已提交的任務后關閉服務,不再接受新任務
•shutdownNow():停止所有正在執行的任務并關閉服務。
•isTerminated():測試是否所有任務都執行完畢了。
•isShutdown():測試是否該ExecutorService已被關閉 
ScheduledExecutorService接口在ExecutorService的基礎上,ScheduledExecutorService提供了按時間安排執行任務的功能,它提供的方法主要有:
•schedule(task, initDelay): 安排所提交的Callable或Runnable任務在initDelay指定的時間后執行。
•scheduleAtFixedRate():安排所提交的Runnable任務按指定的間隔重復執行
•scheduleWithFixedDelay():安排所提交的Runnable任務在每次執行完后,等待delay所指定的時間后重復執行。
 
重要的Executors類
雖然以上提到的接口有其實現的具體類,但為了方便Java 5.0建議使用Executors的工具類來得到Executor接口的具體對象,需要注意的是Executors是一個類,不是Executor的復數 形式。Executors提供了以下一些static的方法:
•callable(Runnable task):將Runnable的任務轉化成Callable的任務
•newSingleThreadExecutor:產生一個ExecutorService對象,這個對象只有一個線程可用來執行任務,若任務多于一個,任務將按先后順序執行。
•newCachedThreadPool():產生一個ExecutorService對象,這個對象帶有一個線程池,線程池的大小會根據需要調整,線程執行完任務后返回線程池,供執行下一次任務使用。
•newFixedThreadPool(int poolSize):產生一個ExecutorService對象,這個對象帶有一個大小為poolSize的線程池,若任務數量大于poolSize,任務會被放在一個queue里順序執行。
•newSingleThreadScheduledExecutor:產生一個ScheduledExecutorService對象,這個對象的線程池大小為1,若任務多于一個,任務將按先后順序執行。
•newScheduledThreadPool(int poolSize):產生一個ScheduledExecutorService對象,這個對象的線程池大小為poolSize,若任務數量大于poolSize,任務會在一個queue里等待執行

舉例說明:
應用Executors來建立Thread pool
 
有時候您需要建立一堆Thread來執行一些小任務,然而頻繁的建立Thread有時會是個開銷,因為Thread的建立必須與作業系統互動,如果能建立一個Thread pool來管理這些小的Thread并加以重復使用,對于系統效能會是個改善的方式。
您可以使用Executors來建立Thread pool,Executors有幾個static方法,列出如下:

方法說明
newCachedThreadPool建立可以快取的Thread,每個Thread預設可idle 60秒

newFixedThreadPool

包括固定數量的Thread

newSingleThreadExecutor

只有一個Thread,循序的執行指定給它的每個任務
newScheduledThreadPool可排程的Thread
newSingleThreadScheduledExecutor單一可排程的Thread

舉個簡單的實例,下面的程式使用newFixedThreadPool方法建立Thread pool,當中包括五個可以重復使用的Thread,您可以指定Runnable物件給它,程式中會產生十個Runnable物件,由于Thread pool中只有五個可用的Thread,所以后來建立的五個Runnable必須等待有空閑的Thread才會被執行:
•ExecutorDemo.java
復制代碼 代碼如下:

package onlyfun.caterpillar;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ExecutorDemo {
 public static void main(String[] args) {
  ExecutorService service = Executors.newFixedThreadPool(5);

  for(int i = 0; i < 10; i++) {
   final int count = i;
   service.submit
(new Runnable() {
    public void run() {
     System.out.println(count);
     try {
      Thread.sleep(2000);
     } catch (InterruptedException e) {
      e.printStackTrace();
     }

    }
   });
  }

  service.shutdown(); // 最后記得關閉Thread pool
 }
}

submit()方法也接受實作Callable介面的物件,最后傳回Future物件,可以取得Callable執行過后的傳回結果。如果想利用Executors進行排程,例如排定某個工作30秒后執行:
復制代碼 代碼如下:

ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor( );       
scheduler.schedule(new Runnable( ) {                              
public void run() {                                  
// 排程工作                              
}                          
},                          
30, TimeUnit.SECONDS);

或排定某個工作5秒后執行,之后每30秒執行一次:
復制代碼 代碼如下:

 final ScheduledFuture future = scheduler.scheduleAtFixedRate(new Runnable( ) {                              
 public void run() {                                  
 // 排程工作                                  
 System.out.println("t");                              
 }                          
 },                          
 0, 5, TimeUnit.SECONDS);              
 // 排定 60 秒后取消future       
 scheduler.schedule(new Runnable( ) {           
 public void run( ) {             
 future.cancel(false);           
 }         
 }, 60, TimeUnit.SECONDS);

如上所示,想要取消排程任務,可以呼叫ScheduledFuture的cancel()方法。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产aaa精品| 久久久亚洲国产天美传媒修理工| 国内外成人免费激情在线视频网站| 国产精品综合久久久| 91精品久久久久久久久久| 国产一区二区av| 一本色道久久综合狠狠躁篇的优点| 久久影院资源网| 亚洲精品成a人在线观看| 欧美疯狂性受xxxxx另类| 亚洲大胆美女视频| 欧美激情按摩在线| 欧美高跟鞋交xxxxhd| 欧美不卡视频一区发布| 国产福利视频一区| 国产精品福利观看| 一区二区亚洲欧洲国产日韩| 欧美性在线视频| 日韩在线中文字幕| 国产成人精品av在线| 欧美精品videosex牲欧美| 欧美华人在线视频| 欧美疯狂做受xxxx高潮| 国产97免费视| 欧美放荡办公室videos4k| 亚洲男人天堂九九视频| 欧美激情视频网站| 日本最新高清不卡中文字幕| 一区二区三区视频在线| 国产91热爆ts人妖在线| 欧美性猛交xxxx偷拍洗澡| 国产亚洲成av人片在线观看桃| 色婷婷**av毛片一区| 亚洲片国产一区一级在线观看| 91精品国产91久久久久久吃药| 色狠狠av一区二区三区香蕉蜜桃| 亚洲精品欧美日韩| 北条麻妃一区二区三区中文字幕| 欧美国产激情18| 2019最新中文字幕| 国产精品小说在线| 欧美一级片在线播放| 国产精品福利在线| 亚洲人在线观看| 欧美日韩性视频在线| 成人免费观看49www在线观看| 奇米四色中文综合久久| 国产精品 欧美在线| 久久久视频免费观看| 亚洲精品福利免费在线观看| 97在线视频免费观看| 成人妇女淫片aaaa视频| 亚洲毛片在线观看.| 91av网站在线播放| 久久久久久国产三级电影| 国产精品自产拍在线观看| 久久精品99无色码中文字幕| 欧美日韩在线视频首页| 久久久欧美精品| 日本欧美中文字幕| 日韩在线观看免费网站| 久热精品视频在线观看一区| 一区二区三区日韩在线| 国产精品视频导航| 成人精品久久一区二区三区| 日韩精品极品毛片系列视频| 国产精品尤物福利片在线观看| 久久视频这里只有精品| 亚洲缚视频在线观看| 亚洲人成电影在线| 欧美国产日本高清在线| 久久成人亚洲精品| 97人人爽人人喊人人模波多| 69久久夜色精品国产7777| 国产精品户外野外| 日韩国产精品一区| 久久综合伊人77777蜜臀| 欧美成人三级视频网站| 亚洲**2019国产| 欧美另类极品videosbest最新版本| 亚洲电影免费观看| 欧美亚洲午夜视频在线观看| 亚洲精品视频免费在线观看| 午夜欧美大片免费观看| 成人中心免费视频| 国产一区二区在线免费视频| 91精品国产99| 91免费精品视频| 波霸ol色综合久久| 久久久久久美女| 亚洲天堂av网| 亚洲男人av电影| 狠狠做深爱婷婷久久综合一区| 亚洲福利视频久久| 狠狠干狠狠久久| 国产精品日韩欧美| 欧美一级电影久久| 欧美一级大胆视频| 91久久精品日日躁夜夜躁国产| 色婷婷综合成人| 欧美色道久久88综合亚洲精品| 国产精品视频免费在线| 日韩在线激情视频| 最近2019中文字幕一页二页| 98精品在线视频| 中文日韩在线视频| 亚洲精品成人免费| 欧美激情视频给我| 中文字幕在线日韩| 中文字幕亚洲欧美| 日韩经典一区二区三区| 亚洲香蕉伊综合在人在线视看| 亚洲aⅴ日韩av电影在线观看| 韩国日本不卡在线| 成人a级免费视频| 中文字幕在线看视频国产欧美在线看完整| 欧美日韩国产一区二区三区| 久久精品国产一区二区电影| 疯狂欧美牲乱大交777| 国产精品久久久久久亚洲调教| 青青久久av北条麻妃海外网| 国模极品一区二区三区| 色婷婷av一区二区三区在线观看| 久久乐国产精品| 91经典在线视频| 欧美激情亚洲综合一区| 色综合天天狠天天透天天伊人| 精品香蕉在线观看视频一| 亚洲精品一区久久久久久| 欧美成人中文字幕在线| 国产精品视频免费在线观看| 亚洲国产一区二区三区在线观看| 国产91在线播放精品91| 一区二区在线视频播放| 亚洲xxxx在线| 国产日韩欧美另类| 亚洲一区二区在线播放| 日韩在线视频观看正片免费网站| 中文字幕日韩精品有码视频| 国产精欧美一区二区三区| 亚洲欧美激情另类校园| 国精产品一区一区三区有限在线| 中文字幕久久亚洲| 国产精品日韩专区| 亚洲精品不卡在线| 国产精品久久久久久久久粉嫩av| www.久久久久| 91豆花精品一区| 日韩成人激情在线| 欧美自拍大量在线观看| 亚洲激情电影中文字幕| 国产精品爱啪在线线免费观看| 91精品视频免费观看| 性欧美长视频免费观看不卡| 国产亚洲美女精品久久久| 欧美成人自拍视频| 51久久精品夜色国产麻豆| 亚洲第一天堂av| 欧美亚州一区二区三区| 中文字幕视频一区二区在线有码| 91九色视频导航| 欧美巨乳美女视频| 日韩高清免费在线| 亚洲人成网站在线播|