java.util.concurrent相關-ThreadPoolExecutor

來源:互聯網
上載者:User
//ThreadPoolExecutor是JDK並發包提供的一個線程池服務,基於ThreadPoolExecutor可以很容易將一個Runnable介面的任務放入線程池中。
java.util.concurrent.ThreadPoolExecutor.ThreadPoolExecutor(int corePoolSize,  //核心線程數,會一直存活,即使沒有任務,線程池也會維護線程的最少數量int maximumPoolSize,  //線程池維護線程的最大數量long keepAliveTime,  //線程池維護線程所允許的空閑時間,當線程空閑時間達到keepAliveTime,該線程會退出,直到線程數量等於corePoolSize。如果allowCoreThreadTimeout設定為true,則所有線程均會退出直到線程數量為0。TimeUnit unit,  //線程池維護線程所允許的空閑時間的單位、選擇性參數值為:TimeUnit中的幾個靜態屬性:NANOSECONDS、MICROSECONDS、MILLISECONDS、SECONDS。BlockingQueue<Runnable> workQueue, // 線程池所使用的緩衝隊列,常用的是:java.util.concurrent.ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueueRejectedExecutionHandler handler //線程池中的數量大於maximumPoolSize,對拒絕任務的處理策略,預設值ThreadPoolExecutor.AbortPolicy())



import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class ThreadPoolDemo{    /**     * 線程池     */    private static final ExecutorService executorService = new ThreadPoolExecutor(20, 50, 900, TimeUnit.SECONDS,                                                new ArrayBlockingQueue<Runnable>(1000),                                                new ThreadPoolExecutor.CallerRunsPolicy());    /**     * 新增工作到線程池     *      * @param runnable     */    public static void doJobWithThreadPool(Runnable runnable) {        executorService.execute(runnable);    }}


//
一個任務通過 execute(Runnable)方法被添加到線程池,任務就是一個Runnable類型的對象,任務的執行方法就是run()方法,如果傳入的為null,側拋出NullPointerException。
如果當前線程數小於corePoolSize,調用addIfUnderCorePoolSize方法。
addIfUnderCorePoolSize方法首先調用mainLock加鎖,再次判斷當前線程數小於corePoolSize並且線程池處於RUNNING狀態,則調用addThread增加線程
//執行個體調用
ThreadPoolDemo.doJobWithThreadPool(new Runnable() {@Overridepublic void run() {    try {logger.info("");if(conditionExpression){     //}else{    //}     } catch (Exception e) {logger.error("", e);    }}});


引用:
http://blog.csdn.net/java2000_wl/article/details/22097059
http://sinye.iteye.com/blog/1946717
http://wujiu.iteye.com/blog/2178212
https://my.oschina.net/u/169390/blog/97415

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.