线程状态
2021-11-10 11:13:28 5 举报
线程状态与切换
作者其他创作
大纲/内容
运行态--->Runable包含操作系统中的running和ready。处于该状态的线程可能正在执行可能等待操作系统为他分配执行时间
获取到时间片
有限等待Timed Waiting
新建态Thread thread = new Thread(...)
阻塞态Blocked
thread.start()
Object::wait(timetout未传参)notify/notifyall唤醒
就绪态Ready
阻塞态和等待态有什么区别?阻塞态的目的是要获取一把排它锁,程序等待进入同步区域的时候,线程进入阻塞状态等待态是在等待被唤醒/或者等待一段时间
状态概述New(新建态):创建后尚未启动的线程start后进入Runable状态(运行态)Runable包含操作系统中的ready和Running状态。运行/等待运行都在这个状态,细分的话分为就绪态和运行态(也就是等待时间片和获取到时间片正在运行)。如果调用了Thread::sleep()进入Timed Waiting(有限等待状态)当时间到了后由系统自动唤醒。如果执行为传递timwout参数的Object::wait()方法,就进入到了waiting(无限等待状态),需要notify、notifyall(synchronized情况下,如果是lock,对应的通信方法是singal和singall)。如果线程要等待获取一把排它锁,那么这个时候就进入了Blocked(阻塞态)。线程运行结束之后,进入到Terminated(结束态)
线程状态在哪看?Thread#State中查看
Thread::sleep()时间到了由系统自动唤醒
运行态Running
等待获取排他锁synchronized
无限等待waiting
结束(死亡态)Terminated
0 条评论
回复 删除
下一页