操作系统层面

1.初始状态:线程创建但未运行
2.可运行状态:处于可以运行的状态,但未获取到时间片,一但系统分配时间片,就会转换为运行状态
3.运行状态:处于正在运行的状态
4.阻塞状态:调用了阻塞API,如处于IO操作等,系统会自动让其进入阻塞状态,不会进行时间片竞争,直到被唤醒,然后变为可运行状态
5.终止状态:程序运行结束
JAVA层面
定义在Thread类的State枚举中,分为如下6种。

1.NEW:线程创建了,但未调用start()方法
2.RUNNABLE:线程被调用start()方法,切正则执行run方法的内容。
3.BLOCKED:线程处于等待锁资源释放的阶段
4.WAITING:线程调用无期限的等待方法,如join()、wait()方法
5.TIMED_WAITING:系统调用有期限的等待方法,如sleep(long millis)、wait(long timeout)
6.TERMINATED:线程运行结束
区别和联系
1.初始状态对应JAVA的NEW状态
2.JAVA的RUNNABEL状态包含线程的可运行状态和运行状态以及部分阻塞状态,如IO操作
3.剩余的阻塞状态等同于JAVA的BLOCK + WAITING + TIMED_WAITING
4.终止状态等同于JAVA的TERMINATED状态
博客介绍了操作系统和Java层面的线程状态。操作系统层面有初始、可运行、运行、阻塞和终止状态;Java层面在Thread类的State枚举中定义了6种状态。还阐述了两者状态的区别和联系,如初始对应Java的NEW状态等。
774

被折叠的 条评论
为什么被折叠?



