package com.weiyi.study.thread; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * 手动创建一个线程池 * @author <a href="mailto:shizi@microants.cn">狮子</a> * version 1.0.0 * since 1.0.0 */ public class ThreadPool { public static void main(String[] args) { ThreadPoolExecutor executor = new ThreadPoolExecutor(2, //核心线程数 Runtime.getRuntime().availableProcessors(), //最大线程数 3, //空闲时最大的存活时间 TimeUnit.SECONDS, //存活时间的单位 new LinkedBlockingQueue<>(10), //阻塞队列 Executors.defaultThreadFactory(), //线程池工厂 new ThreadPoolExecutor.DiscardOldestPolicy()); // 队列满了尝试和最早的竞争,也不会抛出异常 try { for(int i = 1; i <= 20; i++){ executor.execute(() -> { System.out.println(Thread.currentThread().getName() + "=======>OK"); }); } } catch (Exception e) { e.printStackTrace(); } finally { executor.shutdown(); } } }
手动创建一个线程池
最新推荐文章于 2024-04-27 16:31:48 发布