java使用多執行緒

chenzechao發表於2024-09-12
import java.util.concurrent.TimeUnit;
import cn.hutool.core.thread.ExecutorBuilder;
import cn.hutool.core.thread.ThreadFactoryBuilder;

//構造多執行緒,可修改執行緒數
ExecutorService executorService = ExecutorBuilder.create()
        .setCorePoolSize(5) // 初始執行緒數
        .setMaxPoolSize(10) //最大執行緒數
        .setThreadFactory(ThreadFactoryBuilder.create().setNamePrefix("dapData_").build()) // 設定執行緒名稱字首
        .setWorkQueue(new LinkedBlockingQueue<>(100)) // 有界等待佇列,最大等待數是100
        .build();

// 使用多執行緒
// 方法1
for(){
    executorService.execute(new Runnable() {
                @Override
                public void run(){
                //執行操作
                }
            });
}

// 方法2
for(){
    executorService.submit(() -> {
        //執行操作
    }
}

// 方法3
//如果不方便使用for迴圈,直接多寫幾個executorService.execute()也是一樣的。

//關閉多執行緒
executorService.shutdown();
try {
    boolean success = executorService.awaitTermination(10, TimeUnit.MINUTES);
    if (!success) {
        log.error("執行緒池關閉失敗");
    }
} catch (InterruptedException e) {
    log.error("執行緒池關閉失敗",e);
}

相關文章