线程可以分为4个状态:
New(新生),
Runnable(可运行):为了方便分析,还可将其分为:Runnable与Running。
blocked(被阻塞),
Dead(死亡)。
1,新生线程:
当你用new操作符创建一个线程时,例如用new Thread(r),线程还没有开始运行,此时线程处于新生状态;在线程运行之前,还有一些簿记工作要做。
2,可运行线程:
(a)Runnable:一旦调用了start方法,就进入到Runnable状态。
(b)Running:在到Runnable后,线程就有可能已经进入到了运行状态;根据操作系统所提供的服务,在抢占式调度的系统中,系统给每个运行的线程一个时间片来处理任务,而这个时间片用完后,操作系统将剥夺该线程的资源。这样,在Runnable与Running之间是可以相互转换的。所以从大的分类,这两个是可以合并的。
3,被阻塞线程:
(1),当线程通过调用sleep方法进入睡眠状态时。(类似的方法有yield(),join(),这些方法的使用在后面章节介绍)
(2),当线程通过调用wait方法时,进入阻塞。
(3),当线程调用的对象,试图得到这个对象的锁,而该锁已经被其他线程持有。
(4),等待I/O操作。
(5),还有已经过时的suspend方法。
而从被阻塞状态到可运行状态。
(1),sleep睡眠时间已过。
(2),在调用wai方法后,又通过notify或notifyAll方法唤醒。
(3),对象锁已经释放。
(4),I/O操作完成。
(5),对应过进的suspend对应的resume方法。
4,死线程
(1),因为run方法正常退出而自然死亡。
(2),因为一个未捕获的异常终止了run方法而使线程猝死。
(3),已经过时的stop方法。
分享到:
相关推荐
java线程状态之间的转换图,包含转换的一些条件
Java线程状态转换.pdf 学习资料 复习资料 教学资源
主要介绍了Java线程状态转换关系实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java线程状态流转图
初学者学习java多线程的必备良师啊!...内容包含:线程的状态及状态之间的转换 线程的优先级 线程的几大常用方法! 申明: 本文出自 “熔 岩” 博客,本人从百度文库转载而来! 大家都尊重一下 作者的版权!
Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-...
多线程线程状态转换图
Java线程:线程状态的转换.pdf
Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的...
Java线程:线程状态的转换[参考].pdf
四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java线程:线程栈模型与线程的变量 12 Java线程:线程的调度-休眠 13 Java线程:线程的调度-优先级 16 Java线程:线程的...
Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-...
Java线程:线程状态的转换 Java线程:线程的同步与锁 一、同步问题提出 二、同步和锁定 三、静态方法同步 四、如果线程不能不能获得锁会怎么样 五、何时需要同步 六、线程安全类 七、线程死锁 八、线程同步...
在java中的线程转换的总描述,结合了所有的java有关线程的状态转移图
创建线程Java创建线程的四种方式线程状态转换当一个线程执行了start方法后,不代表这个线程就会立即被执行,只代表这个线程处于可运行的状态,最终由OS的线程调
探讨线程在不同状态间的转换和原因。 线程的优先级和命名: 介绍线程的优先级概念,解释如何设置线程的优先级。讲解线程命名的重要性以及如何为线程设置有意义的名称。 线程的同步与阻塞: 引入多线程访问共享资源...
本文首先介绍了线程的有关概念,接着介绍了线程的生命期及其状态间的转换,多线程的调度 原则,线程的死锁,详细阐述了多线程的两种实现方法: 由Thread类派生子类;实现Runnable接口