线程池精选文章汇总,个别点补充

1. 核心线程的创建:
当向线程池提交一个任务时,判断是否还能创建新的核心线程来执行该任务,能的话创建一个新的核心线程,不能的话放入任务等待队列。 注意:这里就算有核心线程是空闲状态,当能创建核心线程时,还是会创建,而不是拿一个空闲的核心线程来执行。空闲的核心线程会不断扫描等待任务队列,从队列里拿到任务然后进行执行。

2.自定义拒绝策略:
希望自定义局决策落时,实现RejectedExecutionHandler接口。

3.关闭线程池:
调用shutdowm后,关闭线程池,线程池的状态变为 SHUTDOWN。线程池不再接受新任务了,但是队列里的任务得执行完毕。 调用shutdownNow后,会将线程池的状态设置为STOP,然后尝试停止所有正在执行任务的线程或暂停任务的线程,并返回等待执行任务的列表。
只要调用了这两个关闭方法中的任意一个,isShutdown方法就会返回true。当所有的任务 都已关闭后,才表示线程池关闭成功,这时调用isTerminaed方法会返回true。

4.为线程池中的线程命名:
使用guava提供的ThreadFactoryBuilder来创建线程。

	private static ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
       .setNameFormat("demo-pool-%d").build();

   private static ExecutorService pool = new ThreadPoolExecutor(5, 200,
       0L, TimeUnit.MILLISECONDS,
       new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());

好文链接:

最系统的讲解
优雅的使用(SpringBoot使用、监控)
源码讲解
自己实现线程池

猜你喜欢

转载自blog.csdn.net/qq_40728028/article/details/106429506