天天看点

P1.线程池中提交任务的流程是什么样的?

作者:帅气的码农大大
P1.线程池中提交任务的流程是什么样的?

1、在使用execute()方法提交一个runnable对象时,判断当前线程池中的线程数是否小于corePoolSize;

P1.线程池中提交任务的流程是什么样的?

2、如果小于,会创建新的线程执行runnable;

P1.线程池中提交任务的流程是什么样的?

3、如果大于等于,则尝试将runnable对象加入到workQueue;

4、若workQueue没满,则runnable正常入队,等待执行

5、若workQueue满了,则尝试增加新的线程

P1.线程池中提交任务的流程是什么样的?

6、如果当前线程池中的线程数小于maximunPoolSize,创建新的线程并执行任务

P1.线程池中提交任务的流程是什么样的?

7、如果大于等于则执行拒绝方法,拒绝此runnable

P1.线程池中提交任务的流程是什么样的?

扩展:线程池的创建方式有两种

  • 通过Executors自动创建
P1.线程池中提交任务的流程是什么样的?
  • 通过ThreadPoolExecutor手动创建
P1.线程池中提交任务的流程是什么样的?

线程池拒绝策略实现了4种

P1.线程池中提交任务的流程是什么样的?

默认使用的是AbortPolicy

P1.线程池中提交任务的流程是什么样的?
P1.线程池中提交任务的流程是什么样的?

关键词:corePoolSize,maximumPoolSize,workQueue,workerCount

人的一生,总是难免有浮沉。不会永远如旭日东升,也不会永远痛苦潦倒。反复地一浮一沉,对于一个人来说,正是磨练。因此,浮在上面的,不必骄傲;沉在底下的,更用不着悲观。必须以率直谦虚的态度,乐观进取向前迈进。

继续阅读