首頁常見問題正文

創(chuàng)建線程池有哪幾種方式?

更新時(shí)間:2023-03-23 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在Java中,創(chuàng)建線程池有兩種常見的方式:

  1.通過 Executors 工具類提供的靜態(tài)方法創(chuàng)建線程池。

  2.通過 ThreadPoolExecutor 構(gòu)造函數(shù)自定義線程池。

  下面是兩種方式的代碼示例:

  1. 通過 Executors 工具類提供的靜態(tài)方法創(chuàng)建線程池:

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

public class ThreadPoolExample {

    public static void main(String[] args) {
        
        // 創(chuàng)建固定大小的線程池
        ExecutorService executor = Executors.newFixedThreadPool(5);

        // 提交任務(wù)給線程池
        for (int i = 0; i < 10; i++) {
            executor.execute(new Task());
        }

        // 關(guān)閉線程池
        executor.shutdown();
    }

    static class Task implements Runnable {
        public void run() {
            System.out.println("Executing task on thread: " + Thread.currentThread().getName());
        }
    }
}

  2.通過 ThreadPoolExecutor 構(gòu)造函數(shù)自定義線程池:

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

public class ThreadPoolExample {

    public static void main(String[] args) {
        
        // 自定義線程池
        ThreadPoolExecutor executor = new ThreadPoolExecutor(
            2, // 核心線程數(shù)
            5, // 最大線程數(shù)
            1, // 空閑線程存活時(shí)間
            TimeUnit.SECONDS, // 存活時(shí)間單位
            new LinkedBlockingQueue<Runnable>() // 任務(wù)隊(duì)列
        );

        // 提交任務(wù)給線程池
        for (int i = 0; i < 10; i++) {
            executor.execute(new Task());
        }

        // 關(guān)閉線程池
        executor.shutdown();
    }

    static class Task implements Runnable {
        public void run() {
            System.out.println("Executing task on thread: " + Thread.currentThread().getName());
        }
    }
}

  在上面的示例中,我們創(chuàng)建了兩個(gè)線程池,一個(gè)是固定大小的線程池,一個(gè)是自定義線程池。在兩個(gè)線程池中,我們都提交了 10 個(gè)任務(wù)給線程池執(zhí)行。每個(gè)任務(wù)都只是打印當(dāng)前線程的名稱。最后,我們調(diào)用了線程池的 shutdown() 方法關(guān)閉線程池。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!