版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/85028672
线程的生命周期
线程从创建到运行再到死亡的整个过程。
在线程整个生命周期中,线程总共分为了五中状态:
- 新建:线程对象创建
- 就绪:通过线程的start方法启动线程,线程就处于就绪状态,等待线程调度,获取CPU的执行权。
- 运行:线程获得CPU的执行权,处于运行中。
- 阻塞:线程在执行期间,因为某种原因(休眠,礼让,时间到达),暂时失去CPU 的执行权,等待再次获得CPU的执行权。
- 死亡:当run(),main()执行结束之后,或者因为线程发生异常,终止执行。线程死亡之后不能在复生。
进入阻塞的方式
- 等待阻塞:线程执行了wait()方法;
- 同步阻塞:线程在执行同步锁的时候,锁对象被其他线程占用。等待其他线程释放锁。
- 其他阻塞:线程执行了sleep()、join()、执行IO操作 直到sleep的时间,或者join的线程结束和时间 到达。或者IO操作结束。 线程会再次恢复到就绪状态。
线程状态图
package org.lanqiao.thread.demo;
public class ThreadDemo {
public static void main(String[] args) {
Thread t1 = new Thread() {
public void run() {
for(int i = 0 ; i < 100 ; i++) {
System.out.println(Thread.currentThread().getName()+"--"+i);
}
}
};
t1.start();
for(int i = 0 ; i < 500 ; i++) {
System.out.println(Thread.currentThread().getName()+"=="+i);
if(i == 50) {
t1.stop();
}
// if(i > 50 && !t1.isAlive()) {
//
// t1.start();
//
// }
}
}
}