Java基础-线程池

2019-12-06  本文已影响0人  16325

线程池

线程池可以通过ThreadPoolExecutor来创建,我们来看一下它的构造函数:

public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime,TimeUnit unit,
   BlockingQueue<Runnable> workQueue,
   ThreadFactory threadFactory,
   RejectedExecutionHandler handler) 

几个核心参数的作用:

四种拒绝策略

线程池异常处理

如果向线程池提交的线程出现异常,线程池并没有抛出异常,所以我们无法感知任务出现了异常。
线程池异常处理方式:

线程池的工作队列

几种常用的线程池

线程池状态

image.png

RUNNING

该状态的线程池会接收新任务,并处理阻塞队列中的任务;
调用线程池的shutdown()方法,可以切换到SHUTDOWN状态;
调用线程池的shutdownNow()方法,可以切换到STOP状态;

SHUTDOWN

该状态的线程池不会接收新任务,但会处理阻塞队列中的任务;
队列为空,并且线程池中执行的任务也为空,进入TIDYING状态;

STOP

该状态的线程不会接收新任务,也不会处理阻塞队列中的任务,而且会中断正在运行的任务;
线程池中执行的任务为空,进入TIDYING状态;

TIDYING

该状态表明所有的任务已经运行终止,记录的任务数量为0。
terminated()执行完毕,进入TERMINATED状态

TERMINATED

该状态表示线程池彻底终止

上一篇 下一篇

猜你喜欢

热点阅读