线程生命周期示意图:
线程的状态:
1. 初始状态(New)
当创建了线程对象实例 即 new Thread(...) 之后,线程进入初始状态,注意这个时候,它还仅仅是一个普通的对象实例,而不是真正的线程,JVM也不会分配相应的资源,例如栈内存空间。
2. 可运行状态/就绪状态(Runnable)
调用了start()方法之后,线程位于“可运行线程池”中,变得可运行也即就绪,只等待获取CPU的使用权。即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。
3. 运行状态(Running)
就绪状态的线程被操作系统选中,获取了CPU时间片,执行程序代码即进入运行状态。
运行状态的线程如果执行了yield()方法,出让了CPU,就会回到就绪状态,这时候与其他线程处于同等竞争状态,但如果操作系统没有忽略线程的优先级设定,那么比该线程优先级高的线程才能获得CPU的调度执行,如果没有则依然会再次调度该线程执行。
4. 阻塞状态(Blocked)
线程由于某种原因放弃了CPU使用权,暂时停止执行,即为阻塞状态,阻塞状态的线程必须重新进入就绪状态,才有机会重新转到运行状态。阻塞的情况分下面几种:
(1)、等待阻塞(WAITING):运行的线程执行了wait()方法,JVM释放该线程占用的所有资源,并将其放入“等待队列/等待池”,进入该状态的线程不能自动唤醒,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒。
(2)、同步阻塞(BLOCKED):运行的线程若在需要获取同步锁(如synchronized等)时,发现同步锁已经被其他线程占用,则JVM会把该线程放入“锁池”中,锁池中以列队的形式(即先到先得)存放着所有正在等待相同同步锁的线程,一旦获得需要的同步锁对象标记,就转入就绪状态。
(3)、其他阻塞(TIMED_WAITING):当运行的线程调用了自身的sleep()方法、或者其他线程的join()方法、或者发生了I/O请求阻塞,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
(4)、线程挂起:运行的线程执行了suspend()方法之后,线程进入阻塞状态,并且不能自动恢复,需要调用其resume()方法,才能使线程重新进入就绪状态。
5. 终止状态(Terminated)
线程执行完了或者因异常退出了run()方法,该线程结束生命周期。
相关推荐
Java多线程(二)、线程的生命周期和状态控制
Java线程的生命周期和状态控制[定义].pdf
四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java线程:线程栈模型与线程的变量 12 Java线程:线程的调度-休眠 13 Java线程:线程的调度-优先级 16 Java线程:线程的...
设计滚动字演示线程状态及改变方法
主要介绍了Java线程的生命周期和状态控制,需要的朋友可以参考下
(完整版)Java程序设计任务驱动式教程-任务二十八-线程的生命周期与优先级(线程的状态与调度).ppt
本文主要介绍了Java中线程的5种状态(新建(New)、就绪(Runable)、运行(Running)、阻塞(Blocked)和死亡(Dead))之间的转换图解,有需要的朋友可以参考下
本次实验了解线程与进程的概念、区别与联系,掌握了多线程的内涵与使用场景,掌握了线程的状态与生命周期,掌握了Java实现多线程的两种方式,理解了临界区、对象锁、互斥、同步等核心概念,理解了线程的互斥与同步,...
线程的生命周期: 解释线程的生命周期,包括新建、就绪、运行、阻塞和终止等状态。探讨线程在不同状态间的转换和原因。 线程的优先级和命名: 介绍线程的优先级概念,解释如何设置线程的优先级。讲解线程命名的重要...
Java 中的线程与进程 1、程序、进程与线程 2、线程的状态与生命周期
#Java线程状态 #并发控制" 5、"利用CyclicBarrier和CountDownLatch解决并发协调难题,提升多线程程序的执行效率和可控性。#并发工具类 #Java并发编程" 6、"volatile与synchronized的巧妙运用,确保数据可见性,...
这份《43道Java多线程高频题整理(附答案背诵版)》资源是一份专门针对Java多线程编程的高频考题集,旨在帮助Java开发者...1. **线程的基本概念**:介绍线程的生命周期、线程状态、以及如何创建和启动线程,包括继承`Thre
文章目录一、多线程的生命周期及五种基本状态二、Java多线程的创建及启动1.继承Thread类,重写该类的run()方法2.通过实现Runnable接口创建线程类3.通过Callable和Future接口创建线程三、Java内存模型概念四、内存间...
讲解java线程的概念、线程的生命周期及线程管理技巧,内容包括线程创建 、线程状态、线程死锁与规避技巧、线程通信等,内容通俗易懂,是学习JAVA线程技术很有帮助的参考资料。
线程要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。下面给出了Thread类中和这四种状态相关的方法
线程的生命周期: 1.新建状态(New):用new语句创建的线程对象处于新建状态,此时它和其它的java对象一样,仅仅在堆中被分配了内存 2.绪状态(Runnable):当一个线程创建了以后,其他的线程调用了它的
演示线程的生命周期 生产者-消费者 设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享...
线程与线程状态:理解Java中线程的基本概念,包括线程的创建、启动、暂停、恢复和终止。熟悉线程的生命周期及其不同状态,如新建、就绪、运行、阻塞和死亡。 线程同步与通信:掌握Java中的同步机制,如synchronized...
进程与线程的区别,线程的操作状态,线程的操作方法,线程的同步与死锁,线程经典案例,生产者-消费者,现线程的生命周期
实验一Android环境构建与Activity生命周期 【目的】 安装智能手机开发相关软件平台,并在此基础上测试Activity的生命周期过程。 【要求】 1. 完成智能手机开发平台安装、以及相关配置; 2. 并实现Hello World; 3. ...