1. 程式人生 > 實用技巧 >java中執行緒池的使用

java中執行緒池的使用

impl類 implements Runnable:

package 執行緒池;

public class Impl implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"建立了新的執行緒");
    }
}

demo測試類:

package 執行緒池;

//執行緒池就是一個集合,一個容器,可以使用LinkedList<Thread> 或者ArrayList<Thread>
//使用執行緒的時候,就從執行緒池(集合)中獲取一個Thread th,用完再還回去(重新放回集合之中) //jdk1.5後內建了執行緒池 //執行緒池中的執行緒可以重複多次使用 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 執行緒池:是jdk1.5之後提供的, * java.util.concurrent.Executors是執行緒的工廠類,用於生產執行緒池 * 該類中有個生產執行緒池的方法: 生產指定執行緒數量的執行緒池:static ExecutorService newFixedThreadPool(int threadNum);//返回值為介面型別 * 可以使用ExecutorService接收,(面向介面程式設計) * <p> * java.util.concurrent.ExecutorService是執行緒池的介面 * 用於從執行緒池中獲取執行緒呼叫start方法執行執行緒任務: submit(Runnable task) * 關閉或銷燬執行緒池的方法: shutdown() * <p> * 執行緒池的使用步驟: * 1 使用執行緒池的工程類java.util.concurrent.Executors 中的靜態方法static ExecutorService newFixedThreadPool(int threadNum);方法生產指定 * 執行緒數量的執行緒池 * 2 建立一個類,實現Runnable介面,重寫run方法以便設定執行緒任務 * 3 呼叫ExecutorService介面中的submit方法,傳遞第二步中的實現類物件,以便開啟執行緒執行執行緒的任務 * 4 呼叫ExecutorService介面中的shutdown方法,銷燬執行緒池,但是不建議銷燬執行緒池
*/ public class Demo01 { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(2); // 設定三個任務 executorService.submit(new Impl());//pool-1-thread-1建立了新的執行緒 executorService.submit(new Impl());//pool-1-thread-2建立了新的執行緒 executorService.submit(new
Impl());//pool-1-thread-2建立了新的執行緒 // 上面其實建立了三個任務,執行緒池中只有2個執行緒,那麼某個執行緒使用完畢後自動將執行緒歸還給執行緒池,繼續執行新的任務 // executorService.shutdown();//不建議執行,執行本行程式碼之後程式也會終止 }//main }