JUC--java中线程的状态
问题:在java中的线程有哪些状态?和操作系统中线程的状态有何不同?线程有哪些常见的状态转换?
–解答:在java中线程有6种状态,分别是NEW、RUNNABLE、WAITING、TIMED_WAITING、BLOCKED和TERMINATED。
在操作系统中一个正在运行的线程由于需要等待某个条件满足才能继续运行时,就会进入等待状态。java语言基于操作系统提供的状态做了一些细化和改变(在操作系统层面,java中不同状态的线程其实是相同状态)。比如:由IO引起的等待在java中不算等待而是RUNNABLE状态(在操作系统层面,该线程还是处于等待状态);由wait(),join(),park()引起的线程等待属于WAITING状态;由sleep(long time),wait(long time)等方法引起的线程等待属于TIMED_WAITING状态;争抢锁资源失败的线程属于BLOCKED状态。而这些状态在操作系统中都属于等待状态。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 dch'blog!