当前位置 : 主页 > 编程语言 > java >

第14章 多线程(16)线程生命周期+创建线程的三种方式

来源:互联网 收集:自由互联 发布时间:2022-07-13
补充2:线程声明周期 前面也讲过这块,但是没有图,总觉得不透彻。找来找去找不到合适的图,于是自己画了一个 新建:new 关键字创建 可运行:通过start()可由新建变可运行,内部状


第14章 多线程(16)线程生命周期+创建线程的三种方式_返回结果

 补充2:线程声明周期

第14章 多线程(16)线程生命周期+创建线程的三种方式_开发语言_02

前面也讲过这块,但是没有图,总觉得不透彻。找来找去找不到合适的图,于是自己画了一个

新建:new 关键字创建

可运行:通过start()可由新建变可运行,内部状态转换不可见,由JVM决定

就绪:让步,运行会变成就绪,下次调度会再次变运行

阻塞:被动等待,类似于lock锁住的部分进不去,synchronized方法和代码块进不去,信号量拿不到通行证、Future的get()还没拿到结果。期望马上进入或者拿到结果,但是没有立刻获得,就会产生阻塞

等待:主动等待。通过synchronize+wait 方式进行等待,notify()/notifyAll()唤醒,或者Condition+await()方式等待,signal()/signal()唤醒

计时等待:主动等待。通过限时间的wait()/await()方式进行等待,sleep()方式也可进行计时等待,不同的是没有释放锁

终止(死亡):线程异常或者执行结束

第14章 多线程(16)线程生命周期+创建线程的三种方式_自定义_03

 补充3:创建线程的三种方式

可能因为自定义线程实际上用的不多的原因,作者讲了Runnable方式、Callable方式,却没讲自定义线程的继承方式,这里补充说明,顺便整理:

网友评论