线程的生命周期
2021-09-07 10:35:57 0 举报
登录查看完整内容
为你推荐
查看更多
线程的生命周期
作者其他创作
大纲/内容
新建(new)
1.获得synchronized 隐式锁的线程,调用无参object.notify()或object.notifyAll()方法2.调用.LockSuport.unpark()方法
1.调用sleep(long millis)方法2.获得synchronized 隐式锁的线程,调用有参object.wait(long timeout)方法3.调用带超时的Thread.join(long millis)方法4.调用带超时的LockSuport.span style=\"font-size: inherit;\
1.当A线程处于运行中,试图获取同步锁时,但同步锁却被B线程获取,此时JVM会把A线程存到共享资源对象的锁池中,A线程进入阻塞状态;2.当线程处于运行状态,发出了IO请求时,该线程会进入阻塞状态;
阻塞状态(blocked)
计时等待状态(time waiting)
1.正常执行完run方法而退出,寿终正寝,属于正常死亡;2.线程执行遇到异常而退出,线程中断,属于意外死亡;3.调用stop方法或者interrupt方法
调用start方法
可运行状态又可以细分成两种状态,ready和running,分别表示就绪状态和运行状态。就绪状态:线程对象调用start方法之后,等待JVM的调度(此时该线程并没有运行),还未开始运行;运行状态:线程对象已获得JVM调度,处在运行中;如果存在多个CPU,那么允许多个线程并行运行;
1.获得synchronized 隐式锁的线程,调用无参object.wait()方法2.调用无参的Thread.join()方法3.调用LockSuport.park()方法
等待状态(waiting)
JVM不会给线程分配CPU时间片,直到线程重新进入就绪状态(ready),才有可能转到运行状态
可运行状态(runnable)
在Java 中,给定的时间点上,一个线程只能处于一种状态,线程对象的状态存放在Thread类的内部类(State)中,是一个枚举,存在着6种固定的状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。
终止状态(terminated)
0 条评论
回复 删除
下一页