更新時(shí)間:2023年07月25日09時(shí)49分 來源:傳智教育 瀏覽次數(shù):
在Java中,Executor和Executors都與線程池相關(guān),但它們有一些區(qū)別。
Executor是Java提供的一個(gè)簡(jiǎn)單接口,它定義了一個(gè)用于執(zhí)行任務(wù)的方法execute(Runnable command)。它只有一個(gè)方法,因此使用時(shí)需要手動(dòng)管理線程池的創(chuàng)建和配置。
Executors是Java提供的工具類,用于創(chuàng)建和管理線程池。它提供了一些靜態(tài)方法來創(chuàng)建不同類型的線程池,簡(jiǎn)化了線程池的創(chuàng)建和配置過程。
演示:下面將演示如何使用Executor和Executors來創(chuàng)建并執(zhí)行一個(gè)簡(jiǎn)單的任務(wù)。
首先,我們使用Executor手動(dòng)創(chuàng)建一個(gè)線程池并執(zhí)行任務(wù):
import java.util.concurrent.Executor; import java.util.concurrent.Executors; public class ExecutorExample { public static void main(String[] args) { // 使用Executor創(chuàng)建一個(gè)固定大小為2的線程池 Executor executor = Executors.newFixedThreadPool(2); // 創(chuàng)建并執(zhí)行任務(wù) executor.execute(() -> { System.out.println("Task 1 is running on thread: " + Thread.currentThread().getName()); }); executor.execute(() -> { System.out.println("Task 2 is running on thread: " + Thread.currentThread().getName()); }); // 關(guān)閉線程池 ((ExecutorService) executor).shutdown(); } }
接下來,我們使用Executors類來創(chuàng)建一個(gè)固定大小為2的線程池并執(zhí)行任務(wù):
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ExecutorsExample { public static void main(String[] args) { // 使用Executors創(chuàng)建一個(gè)固定大小為2的線程池 ExecutorService executorService = Executors.newFixedThreadPool(2); // 創(chuàng)建并執(zhí)行任務(wù) executorService.execute(() -> { System.out.println("Task 1 is running on thread: " + Thread.currentThread().getName()); }); executorService.execute(() -> { System.out.println("Task 2 is running on thread: " + Thread.currentThread().getName()); }); // 關(guān)閉線程池 executorService.shutdown(); } }
這兩個(gè)示例效果是一樣的,但是使用Executors類更為簡(jiǎn)潔,它隱藏了底層線程池的創(chuàng)建和管理細(xì)節(jié),使代碼更易讀和維護(hù)。
北京校區(qū)