多线程-02-线程的生命周期

简介: 线程的生命周期新建 New就绪 Runnable 等待执行运行 Running阻塞 Block死亡 Dead线程被创建之后处于New状态,start()方法调用之后处于Runnable状态,至于什么时候开始则需要等待JVM的调度。

线程的生命周期

新建 New
就绪 Runnable 等待执行
运行 Running
阻塞 Block
死亡 Dead

线程被创建之后处于New状态,start()方法调用之后处于Runnable状态,至于什么时候开始则需要等待JVM的调度。

线程的run()是线程的执行体,start()方法才是线程的启动方法。如果直接调用线程的run()方法的话,java会把线程当成普通对象,把run()方法当成普通方法,所以并不会启动新的线程。

如果就绪状态的线程获得了cpu,开始执行run()的方法体。

线程死亡

  1. run()或者call()方法执行完毕,线程正常结束。
  2. 线程抛出一个未捕获的Exception或者Error。
  3. 直接调用该线程的stop()方法来结束该线程---该方法容易导致死锁,尽量不适用。
    当主线程结束时,并不会影响其他线程,其他线程不会随之结束,一旦子线程启动起来后,它就拥有跟主线程同样的地位,不会受到主线程的影响

判断一个线程是否死亡:osAlive()。就绪,运行,阻塞状态的线程返回true,新建和死亡状态的线程返回false。
已死亡的线程不可再start()。抛出异常IllegalThreadStateException

目录
相关文章
|
2天前
|
Java
多线程线程同步
多线程的锁有几种方式
|
9天前
|
调度 Python
|
12天前
|
安全 算法 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(下)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
52 6
|
12天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(中)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
54 5
|
12天前
|
存储 安全 Java
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)(上)
17 Java多线程(线程创建+线程状态+线程安全+死锁+线程池+Lock接口+线程安全集合)
48 3
|
2天前
|
安全 C# 开发者
【C# 多线程编程陷阱揭秘】:小心!那些让你的程序瞬间崩溃的多线程数据同步异常问题,看完这篇你就能轻松应对!
【8月更文挑战第18天】多线程编程对现代软件开发至关重要,特别是在追求高性能和响应性方面。然而,它也带来了数据同步异常等挑战。本文通过一个简单的计数器示例展示了当多个线程无序地访问共享资源时可能出现的问题,并介绍了如何使用 `lock` 语句来确保线程安全。此外,还提到了其他同步工具如 `Monitor` 和 `Semaphore`,帮助开发者实现更高效的数据同步策略,以达到既保证数据一致性又维持良好性能的目标。
8 0
|
5天前
|
Java UED
基于SpringBoot自定义线程池实现多线程执行方法,以及多线程之间的协调和同步
这篇文章介绍了在SpringBoot项目中如何自定义线程池来实现多线程执行方法,并探讨了多线程之间的协调和同步问题,提供了相关的示例代码。
32 0
|
27天前
|
算法 Java 编译器
多线程线程安全问题之系统层面的锁优化有哪些常见的策略
多线程线程安全问题之系统层面的锁优化有哪些常见的策略
|
27天前
|
Java
多线程线程安全问题之什么是锁的粒度,减少锁的粒度有哪些好处
多线程线程安全问题之什么是锁的粒度,减少锁的粒度有哪些好处
|
27天前
多线程线程安全问题之synchronized和ReentrantLock在锁的释放上有何不同
多线程线程安全问题之synchronized和ReentrantLock在锁的释放上有何不同

相关实验场景

更多