JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

腾讯一面:Java的线程池有哪几种状态?

wys521 2024-11-18 18:01:19 精选教程 26 ℃ 0 评论

线程池有哪几种状态?

RUNNING

这种状态就表示线程池它是在正常的运行。正常去接受任务,然后去执行任务。如果说有任务处理不过来,就会放到队列里面。所以当线程池处于RUNNING状态,它就能正常去接受任务、去处理任务,包括解锁的任务,包括队列中的任务。

SHUTDOWN

当我们去调用线程池的 shutdown() 方法的时候,线程池它其实就会进入SHUTDOWN状态。而这个时候线程池不会接受新的任务了,但是会继续的把队列里面剩下的任务处理完,处理完之后,线程会中断,就进入到另外一个TIDYING状态。

STOP

当我们调用线程池的 shutdownnow() 方法的时候,就会进入STOP状态。它和上文SHUTDOWN的区别在于什么呢?相同点是一旦线程池处于这两个状态,就都不会去接受新的任务。而不同点在于,如果处于是STOP状态,那么队列中间剩下的任务,线程池也不会去处理了。shutdownnow的意思就是立马给我停掉,所以只要调到这个方法,立马进入STOP状态,并且会把正在运行的线程直接中断掉,剩下的任务也不去处理了。

TIDYING

所有的线程池内部的线程都中断了之后,相当于都停掉了之后,我们的线程池就会处于这个状态,那么线程池一旦处于这个状态,线程池内部它会去调用我们 terminate() 这个方法。

TERMINATED

调用 terminate() 方法后,线程池就会进入到TERMINATED状态。线程池真的就已经关闭了,而这个方法在线程池内部它是一个空方法,它并没有实现具体的逻辑,这个方法是给我们程序员来扩展的。线程池里面的线程都停掉了之后,你可以去做一些处理,做一些回调。


这就是我们线程池的五个状态,正常的状态,两个停止的状态,线程都停完了之后,会进入随波逐流TIDYING状态,然后这个状态会掉terminate方法,调完就会进入到terminated最终态。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表