您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Java中怎么使用Executor接口,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Executor屬于java.util.concurrent包下;
Executor是任務執行機制的核心接口;
由類圖結構可知:
ThreadPoolExecutor 繼承了AbstractExecutorService接口;
AbstractExecutorService接口實現了ExecutorService接口;
ExecutorService繼承了Executor接口;
因此以下部分主要講解ThreadPoolExecutor類。
void execute(Runnable command) 在將來的某個時間執行給定的命令。 該命令可以在一個新線程,一個合并的線程中或在調用線程中執行,由Executor實現。
注:通過Executors類的方式創建線程池,參考lz此博文鏈接http://www.mlszssj.com/article/215163.htm
1.ThreadPoolExecutor類中的構造方法
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue workQueue,defaultHandler)
2、 ThreadPoolExecutor類中構造函數的參數解析
corePoolSize 核心線程最大數量,通俗點來講就是,線程池中常駐線程的最大數量
maximumPoolSize 線程池中運行最大線程數(包括核心線程和非核心線程)
keepAliveTime線程池中空閑線程(僅適用于非核心線程)所能存活的最長時間
unit 存活時間單位,與keepAliveTime搭配使用
workQueue 存放任務的阻塞隊列
handler 線程池飽和策略
3、ThreadPoolExecutor類創建線程池示例
代碼
package com.xz.thread.executor; import java.util.concurrent.*; public class Demo { public static void main(String[] args) { ThreadPoolExecutor pool = new ThreadPoolExecutor(3,3, 1L, TimeUnit.MINUTES,new LinkedBlockingDeque<>()); for(int i=1;i<=5;i++){ pool.execute(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()); try { Thread.sleep(1000); System.out.println("睡眠一秒鐘"); } catch (InterruptedException e) { e.printStackTrace(); } } }); } } }
輸出結果如下圖
結論:無論是創建何種類型線程池(newFixedThreadPool、newSingleThreadExecutor、newCachedThreadPool等等),均會調用ThreadPoolExecutor構造函數。
關于Java中怎么使用Executor接口就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。