1. 程式人生 > >java.util.concurrent包中執行緒池Executors的使用

java.util.concurrent包中執行緒池Executors的使用

  1. 執行緒池的概念與Executors類的使用
    (1)建立固定大小的執行緒池–當有多個任務時,會先按照執行緒池中的資料執行任務,其他任務處於等待過程中,等執行完這批任務後再執行下批任務。
    (2)建立快取執行緒池,會根據任務的多少來建立執行緒
    (3)建立單一執行緒池(該執行緒死掉後,系統會自動建立另一個執行緒)
package cn.threadPool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public
class ThreadPoolTest { /** * 建立執行緒池 */ public static void main(String[] args) { // 建立執行緒池,執行緒池中有三個執行緒 //ExecutorService threadPool=Executors.newFixedThreadPool(3); //建立快取執行緒,會根據任務自動建立執行緒的個數 ExecutorService threadPool=Executors.newCachedThreadPool(); for
(int n=0;n<10;n++){ final int task=n; // 往執行緒池中放10個任務,但執行緒池中只有三個執行緒,會三個任務執行完之後再執行三個。 threadPool.execute(new Runnable(){ @Override public void run() { for(int i=0;i<10;i++){ try { Thread.sleep(20); } catch
(InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+" 迴圈到"+i+" ,loop "+task); } } }); } System.out.println("任務結束"); //threadPool.shutdown();//執行緒執行完所有任務時,會關掉程式 /** * 用執行緒池啟動定時任務 * */ Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable(){ @Override public void run() { System.out.println("booming"); } }, 2, 2, TimeUnit.SECONDS); } }