线程池

futuretask+callable

返回值不是Thread 而是FutureTask

new Thread(new FutureTask(()-> return 1))

类型(不用)

都是executors下面的
newCachedThreadPool:可缓存 >> 可能创建大量线程
newFixedThreadPool: 指定工作线程数量 >> 允许的请求队列长度
newSingleThreadExecutor: 唯一的工作线程 >> 和上面一样
newScheduleThreadPool: 定时的以及周期性
newSingleThreadScheduledExecutor: 单线程执行+延期

CachedThreadPool => 允许创建的线程数为Integer.MAX_VALUE,可能会创建大量的线程,从而引起OOM异常

参数(自己创建)

ThreadPoolExecutor直接new就行
核心线程数+最大线程数+时间+时间单位+阻塞队列+拒绝策略

ExecutorService executor = new ThreadPoolExecutor(3, 5, 1000,
                TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(2),
                new ThreadPoolExecutor.CallerRunsPolicy());

拒绝策略

中止abort+丢弃discard+丢弃老discardoldest+调用callerruns

原文地址:https://www.cnblogs.com/purexww/p/15253751.html