1. 程式人生 > >執行緒池原理--總索引

執行緒池原理--總索引

文章目錄

執行緒池原理–總索引

執行器Executor

拒絕策略

任務佇列BlockingQueue

在不使用執行緒池的時候,我們都是手動建立一個執行緒並啟動。


public MyThread extends Thread{
	public void run(){
		//do something
		.....
	}
	public static void main(String[] args){
		MyThread thread =  new MyThread();
		thread.start();
	}
}

因為建立執行緒和銷燬執行緒會消耗系統的資源,並不是一種很好的方式去實現多執行緒,使用執行緒池比較好。

package com.jt.thread.demo05;

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

class MyRunnable implements Runnable {
    @Override
    public void run() {
        for (int x = 0; x < 100; x++) {
            System.out.println(Thread.currentThread().getName() +
":" + x); } } } public class ExecutorServiceDemo { public static void main(String[] args) { // 建立一個執行緒池物件,控制要建立幾個執行緒物件。 // public static ExecutorService newFixedThreadPool(int nThreads) ExecutorService pool = Executors.newFixedThreadPool(2); // 可以執行Runnable物件或者Callable物件代表的執行緒 pool.submit(new MyRunnable()); pool.submit(new MyRunnable()); //結束執行緒池 pool.shutdown(); } }

使用執行緒池的好處:

  • 第一:降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷燬造成的消耗。

  • 第二:提高響應速度。當任務到達時,任務可以不需要等到執行緒建立就能立即執行。

  • 第三:提高執行緒的可管理性。執行緒是稀缺資源,如果無限制的建立,不僅會消耗系統資源,還會降低系統的穩定性,使用執行緒池可以進行統一的分配,調優和監控。**