阿里规范要求的标准做法2------hutool创建ThreadFactory
import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import lombok.extern.slf4j.Slf4j; import cn.hutool.core.thread.ThreadFactoryBuilder; @Slf4j public class ThreadPoolExecutorStandard2 { public static void main(String[] args) { BlockingQueue<Runnable> blockQueue = new LinkedBlockingQueue<Runnable>(1024); RejectedExecutionHandler abort = new ThreadPoolExecutor.AbortPolicy(); ThreadFactory namedThreadFacgtory = new ThreadFactoryBuilder().setNamePrefix("test-pool-").build(); ExecutorService fixedThreadPool = new ThreadPoolExecutor(3, 5, 50L, TimeUnit.MILLISECONDS, blockQueue, namedThreadFacgtory, abort); try { for (int i = 0; i < 20; i++) { Runnable syncRunnable = new Runnable() { @Override public void run() { log.info(Thread.currentThread().getName()); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }; fixedThreadPool.execute(syncRunnable); } } finally { fixedThreadPool.shutdown(); } } }
输出:
15:11:16.098 test-pool-0
15:11:16.098 test-pool-1
15:11:16.098 test-pool-2
15:11:18.101 test-pool-1
15:11:18.101 test-pool-0
15:11:18.101 test-pool-2
15:11:20.101 test-pool-1
15:11:20.102 test-pool-0
15:11:20.102 test-pool-2
15:11:22.101 test-pool-1
15:11:22.102 test-pool-0
15:11:22.104 test-pool-2
15:11:24.102 test-pool-1
15:11:24.104 test-pool-0
15:11:24.105 test-pool-2
15:11:26.103 test-pool-1
15:11:26.104 test-pool-0
15:11:26.105 test-pool-2
15:11:28.103 test-pool-1
15:11:28.105 test-pool-0