以創建 newFixedThreadPool 定長線程池爲例:
首先,java.util.concurrent.Executors:線程池的工廠類,用來生成線程池
其次,Executors類中的靜態方法: static ExecutorService newFixedThreadPool(int nThreads) 創建一個可重用固定線程數的線程池
- 參數:
int nThreads:創建線程池中包含的線程數量 - 返回值:
ExecutorService接口,返回的是ExecutorService接口的實現類對象,我們可以使用ExecutorService接口接收(面向接口編程)
java.util.concurrent.ExecutorService:線程池接口,用來從線程池中獲取線程,調用start方法,執行線程任務。
submit(Runnable task)提交一個Runnable任務用於執行
關閉/銷燬線程池方法 : void shutdown()
線程池的使用步驟:
1、使用線程池的工廠類Executors裏面提供的靜態方法newFixedThreadPool生產一個指定線程數量的線程池。
2、創建一個類,實現Runnable接口,重寫run方法,設置線程任務。
3、調用ExecutorService中的方法submit,傳遞線程任務,開啓線程,執行run方法。
4、調用ExecutorService中的方法shutdown銷燬線程池(不建議執行)。
代碼如下:
- 創建一個類,實現Runnable接口,重寫run方法,設置線程任務
public classRunnableImp1 implements Runnable {
public void run() {
System.out.println(Thread.currentThread().getName()+"創建了一個新的線程,執行");
}
}
- 創建Demo01ThreadPool類
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Demo01ThreadPool {
public static void main(String args[]) {
//1、使用線程池的工廠類Executors裏面提供的靜態方法newFixedThreadPool生產一個指定線程數量的線程池。
ExecutorService es=Executors.newFixedThreadPool(2);//線程池數量爲2
//2.調用ExecutorService中的方法submit,傳遞線程任務,開啓線程,執行run方法。
es.submit(new RunnableImp1());
//3.調用ExecutorService中的方法shutdown銷燬線程池(不建議執行)
es.shutdown();//使用後會把線程池銷燬,就無法執行新的線程了。
}
}