在平时的开发工作中,我们一定会接触到线程,线程池,以及FutureTask等.那么它们的状态又是如何流转的呢?

接下来我用三张图来让读者从全局观了解熟悉它们的状态变化.

线程状态

线程状态&线程池状态&任务状态_FutureTask

线程的状态共有6个,分别是

NEW

RUNNABLE

WAITING

TIMED_WAITING

BLOCKED

TERMINATED

这里所说的线程状态是线程在JVM中的状态,那么线程在操作系统中的对应状态又是什么呢?这个我们会在后面的文章中详细介绍.

线程池状态

线程状态&线程池状态&任务状态_线程_02

线程池的状态共有5个,分别是

RUNNING

SHUTDOWN

STOP

TIDYING

TERMINATED

当我们在向线程池提交任务的时候,流程是什么? 请期待

线程池中的任务状态

线程状态&线程池状态&任务状态_线程_03

向线程池提交的任务也有相应的状态.

任务的状态共有7个,分别是

NEW

COMPLETING

NORMAL

EXCEPTIONAL

CANCELLED

INTERRUPTING

INTERRUPTED

当我们在调用get(), cancel()方法时,以及任务在执行的过程, 状态是如何流转的?请期待

此篇文章主要是先让读者对线程状态,线程池状态,任务状态有个全局观, 后面会有专题问题分别介绍它们.

线程是程序的灵魂, 是线程一直在活动, 我们只有知道它们在干什么, 处于什么状态, 才能更高的开发以及排查问题.


 

线程状态&线程池状态&任务状态_线程池_04