Java 线程模型
2011-07-29 20:54
162 查看
Java 线程的生命周期包括创建,就绪,运行,阻塞,死亡 5 个状态。一个 Java 线程总是处于这 5 个生命周期状态之一,并在一定条件下可以在不同状态之间进行转换。
创建状态 (New Thread)
在 Java 语言中使用 new 操作符创建一个线程后,该线程仅仅是一个空对象,它具备了线程的一些特征,但此时系统没有为其分配资源,这时的线程处于创建状态。
就绪状态 (Runnable)
使用 start() 方法启动一个线程后,系统为该线程分配了除 CPU 外的所需资源,使该线程处于就绪状态。此外,如果某个线程执行了 yield() 方法,那么该线程会被暂时剥夺 CPU 资源,重新进入就绪状态。
运行状态 (Running)
Java 运行系统通过调度选中一个处于就绪状态的线程,使其占有 CPU 并转为运行状态。此时,系统真正执行线程的 run() 方法。
阻塞状态 (Blocked)
一个正在运行的线程因某些原因不能继续运行时,它就进入阻塞状态。这些原因包括:当执行了某个线程对象的 suspend()、sleep() 等阻塞类型的方法时,该线程对象会被置入一个阻塞集(Blocked Pool)内,等待被唤醒(执行 resume() 方法)或是因为超时而时自动苏醒;当多个线程试图进入某个同步区域(synchronized)时,没能进入该同步区域的线程会被置入锁定集(Lock Pool),直到获得该同步区域的锁,进入就绪状态;当线程执行了某个对象的 wait() 方法时,线程会被置入该对象的等待集(Wait
Pool)中,直到执行了该对象的 notify() 方法,wait()/notify() 方法的执行要求线程(进入LockPool)首先获取到该对象的锁。
死亡状态 (Dead)
线程在 run() 方法执行结束后进入死亡状态。此外,如果线程执行了 interrupt() 或 stop() 方法,那么它也会以异常退出的方式进入死亡状态。
创建状态 (New Thread)
在 Java 语言中使用 new 操作符创建一个线程后,该线程仅仅是一个空对象,它具备了线程的一些特征,但此时系统没有为其分配资源,这时的线程处于创建状态。
就绪状态 (Runnable)
使用 start() 方法启动一个线程后,系统为该线程分配了除 CPU 外的所需资源,使该线程处于就绪状态。此外,如果某个线程执行了 yield() 方法,那么该线程会被暂时剥夺 CPU 资源,重新进入就绪状态。
运行状态 (Running)
Java 运行系统通过调度选中一个处于就绪状态的线程,使其占有 CPU 并转为运行状态。此时,系统真正执行线程的 run() 方法。
阻塞状态 (Blocked)
一个正在运行的线程因某些原因不能继续运行时,它就进入阻塞状态。这些原因包括:当执行了某个线程对象的 suspend()、sleep() 等阻塞类型的方法时,该线程对象会被置入一个阻塞集(Blocked Pool)内,等待被唤醒(执行 resume() 方法)或是因为超时而时自动苏醒;当多个线程试图进入某个同步区域(synchronized)时,没能进入该同步区域的线程会被置入锁定集(Lock Pool),直到获得该同步区域的锁,进入就绪状态;当线程执行了某个对象的 wait() 方法时,线程会被置入该对象的等待集(Wait
Pool)中,直到执行了该对象的 notify() 方法,wait()/notify() 方法的执行要求线程(进入LockPool)首先获取到该对象的锁。
死亡状态 (Dead)
线程在 run() 方法执行结束后进入死亡状态。此外,如果线程执行了 interrupt() 或 stop() 方法,那么它也会以异常退出的方式进入死亡状态。
相关文章推荐
- java 线程“生产/消费”模型1
- Java线程:并发协作-生产者消费者模型
- 简析Java Swing线程模型
- Java线程:线程栈模型与线程的变量
- 基于 Java 2 运行时安全模型的线程协作--转
- Java学习札记之线程模型——生产消费模型
- Java 内存模型与线程
- java的内存模型与线程
- java线程内存模型,线程、工作内存、主内存
- Java中的线程模型及实现方式
- Java线程:并发协作-生产者消费者模型
- eventloop & actor模式 & Java线程模型演进 & Netty线程模型 总结
- Java线程:并发协作-生产者消费者模型
- Java线程:并发协作-生产者消费者模型
- 08 JAVA 线程 内存模型(二)
- Java线程角度的内存模型和volatile型变量
- Java线程:线程栈模型与线程的变量
- java 的线程模型
- Java 线程/内存模型的缺陷和增强
- 第23章 java线程通信——生产者/消费者模型案例