美文网首页JUC并发相关
4. 并发终结之线程生命周期

4. 并发终结之线程生命周期

作者: 涣涣虚心0215 | 来源:发表于2020-10-01 00:02 被阅读0次

简单回顾下线程的基本概念:
线程有两种创建方式,一种是直接new Thread()类,另一种是通过Runnable和Thread的组合形式new Thread(Runnable runnable)。
那么哪种方式比较好呢?
从面向对象编程方面来看,直接通过Thread类属于继承,而通过Runnable是组合技术,相对而言组合技术更加灵活,耦合性更低。
从对象共享方面来看,Runnable方式意味着多个Thread可以共用一个Runnable实例,这里要注意线程安全问题。
从对象创建成本来看,Thread类直接创建一个线程对象,成本相对高一些(JVM会为每个线程分配调用栈所需空间,且每个线程还可能有一个内核线程与之对应),而Runnable是一个普通的类,并没有开始创建线程。
不管采用哪种方式创建线程,一旦线程的run方法(JVM调用)结束,相应的线程也就运行结束。当然run方法的结束包括正常结束,以及run方法中代码抛出异常而提前结束。
线程的生命周期

image.png
线程的状态可以通过getState()方法获得。
这里要注意的是sleep(long)方法不会释放持有的的锁。
object.wait()/lockSupport.park()方法都会释放持有的锁。

相关文章

网友评论

    本文标题:4. 并发终结之线程生命周期

    本文链接:https://www.haomeiwen.com/subject/sozdlktx.html