owasp 网站开发,制作网站网站,有哪些做笔译的网站,产品设计就业方向在操作系统层面#xff0c;线程有五种状态 初始状态#xff1a;线程被创建#xff0c;操作系统为其分配资源。
可运行状态(就绪状态)#xff1a;线程被创建完成#xff0c;进入就绪队列#xff0c;参与CPU执行权的争夺。或因为一些原因#xff0c;从阻塞状态唤醒的线程…在操作系统层面线程有五种状态 初始状态线程被创建操作系统为其分配资源。
可运行状态(就绪状态)线程被创建完成进入就绪队列参与CPU执行权的争夺。或因为一些原因从阻塞状态唤醒的线程重新进入就绪队列参与CPU时间片的抢夺。
运行状态线程抢到CPU执行权进行上下文切换保存上一条线程执行的数据和环境执行任务。如果时间片结束进行上下文切换重新进入可运行状态。
阻塞状态某些情况下线程需要等待其他资源或者进入休眠进入阻塞状态等待唤醒。
终止状态线程进入终止状态通常发生在线程执行完毕、被中断或被异常退出时。在终止状态中线程释放了它所占用的资源。
在JVM层面线程有六种状态(图有点糙....) 初始状态NEW线程被创建系统分配资源。
运行状态RUNNABLE线程被调用start()方法进入线程任务的执行。
有限期等待TIMED_WAITING一般是被指定了超时时间进入等待一般会在超时时间结束自动返回也可以在超时时间内被notify()唤醒或
无限期等待WAITING表示该线程需要等待其他线程做出一些特定动作通知或中断否则会一直等待下去。
阻塞状态BLOCKED锁阻塞状态等待锁释放。
终止状态TERMINATED当线程执行完毕或因异常退出时它进入终止状态释放所有资源。
PS:JVM的RUNNABLE也就是操作系统下的可运行状态和运行状态。
这是因为现在的cpu分片时间很很小一个时间片大概是10-20ms,每条线程每次处于运行中的状态也就是0.01s-0.02s,就要放弃cpu执行权进入就绪队列。切换的如此之快区分这两种状态就没有什么意思了。