并發(fā)任務(wù)創(chuàng)建與執(zhí)行

背景

某些業(yè)務(wù)場(chǎng)景下需要使用多線(xiàn)程并發(fā)執(zhí)行任務(wù),增大吞吐量,這里給出一個(gè)多線(xiàn)程并發(fā)任務(wù)創(chuàng)建與執(zhí)行的 demo

目錄

  1. 線(xiàn)程池創(chuàng)建
  2. 并發(fā)任務(wù)創(chuàng)建
  3. 任務(wù)并發(fā)執(zhí)行

線(xiàn)程池創(chuàng)建

談到多線(xiàn)程,肯定少不了線(xiàn)程池的創(chuàng)建,這里自定義一個(gè)線(xiàn)程池工廠,方便擴(kuò)展

public class ExecutorFactory {

    public static ExecutorService newInstance(){
        ExecutorService executor = new ThreadPoolExecutor(
                10,
                10,
                30,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(10));
        return executor;
    }
}

任務(wù)創(chuàng)建

創(chuàng)建并發(fā)執(zhí)行的任務(wù)類(lèi)

public class Task implements Runnable {

    private String taskName;

    public Task(String taskName) {
        this.taskName = taskName;
    }

    @Override
    public void run() {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(taskName);
    }
}

測(cè)試

測(cè)試并發(fā)任務(wù)執(zhí)行

public class TaskTest {

    public static void main(String[] args) {
        testTask();
    }
    public static void testTask(){
        ExecutorService executorService = ExecutorFactory.newInstance();

        Task task1 = new Task("task1");
        Task task2 = new Task("task2");
        Task task3 = new Task("task3");

        List<Task> tasks = new ArrayList<>();
        tasks.add(task1);
        tasks.add(task2);
        tasks.add(task3);

        System.out.println("start...");
        for (Task task : tasks) {
            executorService.submit(task);
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容