激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java ThreadPoolExecutor使用方法簡單介紹

java ThreadPoolExecutor使用方法簡單介紹

2020-08-13 11:51linsongbin Java教程

這篇文章主要介紹了java ThreadPoolExecutor使用方法簡單介紹的相關資料,需要的朋友可以參考下

java  ThreadPoolExecutor

前言:

在項目中如果使用發短信這個功能,一般會把發短信這個動作變成異步的,因為大部分情況下,短信到底是發送成功或者失敗,都不能影響主流程。當然像發送MQ消息等操作也是可以封裝成異步操作的。

使用基本的New Thread

如果想一個操作變成異步的,可以直接new thread,然后在run方法中實現業務操作即可。例如:

?
1
2
3
4
5
new Thread(new Runnable() {
   public void run() {
     //發短信、發MQ消息等
   }
});

但是這種方式有幾個缺點。

1.每次都會new一個線程,執行完后銷毀,不能復用;

2.如果系統的并發量剛好比較大,需要大量線程,那么這種每次new的方式會搶資源的。

ThreadPoolExecutor

我們可以使用jdk1.5中的ThreadPoolExecutor來封裝異步操作。ThreadPoolExecutor的好處是可以做到線程復用,并且使用盡量少的線程去執行更多的任務,效率和性能都相當不錯。demo代碼如下:

?
1
2
3
4
5
6
7
8
public class ThreadPool {
  private static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(8, 12, 30,
      TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(50000), new ThreadPoolExecutor.AbortPolicy());
 
  public static ThreadPoolExecutor getThreadPool() {
    return threadPool;
  }
}

參數介紹

?
1
2
3
4
5
6
7
8
public ThreadPoolExecutor(int corePoolSize,
               int maximumPoolSize,
               long keepAliveTime,
               TimeUnit unit,
               BlockingQueue<Runnable> workQueue,
               RejectedExecutionHandler handler) {
 
 }

corePoolSize:當workQueue隊列中的元素還未到達最大值時,corePoolSize表示的池中線程數量的最大值;
maximumPoolSize:線程池中允許的最大線程數;
keepAliveTime:當前池中的線程數如果超過了corePoolSize,那么超出那些線程如果空閑太久了,應該需要銷毀的。keepAliveTime就是的是這些線程的最大空閑時間;
unit:keepAliveTime的時間單位;
workQueue:當池中線程數的數量已經達到了corePoolSize,那么如果請求還繼續過來,會把請求對應的task放入隊列中;
handler:當workQueue滿了,池中的線程數又達到了maximumPoolSize,這個時候已經沒有多余的資源處理請求了,需要RejectedExecutionHandler 來處理。拒絕處理或者丟棄任務等等。

執行過程

當沒有請求時,線程池中沒有任何線程;

當有請求時,創建線程,一直到池中的線程數等于corePoolSize;

如果請求太多,需要更多的線程來處理的話,ThreadPoolExecutor選擇把請求放入隊列中,暫時不新建線程;

如果workQueue也滿了,ThreadPoolExecutor會繼續創建線程,直到線程數量跟maximumPoolSize相等;

線程數達到maximumPoolSize了,同時workQueue也慢了,就只能把請求丟給RejectedExecutionHandler 來處理。

備注

使用ThreadPoolExecutor時,需要根據自己的業務情況,適當的指定參數值的大小。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/linsongbin1/article/details/51487811

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 福利在线免费视频 | 99久久精品免费看国产四区 | 成人在线视频国产 | 色天使中文字幕 | 国产妞干网 | 午夜久久久精品一区二区三区 | 在线免费观看毛片 | 羞羞答答tv | 黄色av一区二区三区 | 亚洲国产成人一区二区 | 狠狠色噜噜狠狠狠米奇9999 | 91精品最新国内在线播放 | 国产一级伦理片 | 中文字幕在线观看视频一区 | 国产精品一区二区视频 | 视频一区二区视频 | 免费观看一级黄色片 | 久久国产亚洲视频 | 国产精品久久久久久久久久 | 久久免费视频一区 | 成人免费在线播放 | 亚洲va久久久噜噜噜久牛牛影视 | 91短视频网址 | 成人一级视频在线观看 | 国产69精品久久久久99尤 | 国产99视频精品免视看9 | 伊人999 | 黄色av.com | 国产免费成人 | 久久久一区二区三区精品 | 日本高清在线免费 | 久久久久久久久久久国产精品 | 999久久久精品 | 国产精品热 | 久久精品亚洲一区二区 | 日产精品久久久一区二区开放时间 | 91av国产在线 | 欧美国产一区二区三区 | 成人观看网站 | 国产毛片在线高清视频 | chinese-xvideos |