1.創建線程池:Java中用ThreadPoolExecutor來表示線程池
ThreadPoolExecutor exe =new ThreadPoolExecutor(corePoolSize,maximumPoolSize,keepAliveTime,util,workQueue);
這四個參數的含義是:
corePoolSize 核心線程數量
maximumPoolSize 線程池中可以容納的最大線程的數量
keepAliveTime 程池中除了核心線程之外的其他的最長可以保留的時間
util 就是計算這個時間的單位 (TimeUnit枚舉類)
workQueue 就是等待隊列,任務可以儲存在任務隊列中等待被執行
2.使用線程池:
exe.execute(); 里面傳一個實現Runnable接口的對象 代表線程池執行該任務 該任務就是封裝在實現Runnable接口中抽象方法run中。
3.常見的線程池:
newCachedThreadPool:創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閑線程,若無可回收,則新建線程。
newFixedThreadPool:創建一個定長線程池,可控制線程最大並發數,超出的線程會在隊列中等待。
newScheduledThreadPool:創建一個定長線程池,支持定時及周期性任務執行。
newSingleThreadExecutor:創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先級)執行。
創建線程池的方法 例如:
ExecutorService pool =Executors.newCachedThreadPool(); //為固定格式 四個線程池都可以套用。