package com.threadlifetime.ljb;
/**
* 1.线程的生命周期:
* 指线程从创建到启动,直至运行结束
* 可以通过调用 Thread 类的相关方法影响线程的运行状态
* 2.线程的运行状态:
* 新建(New):当创建了一个 Thread 对象时,该对象就处于“新建状态”,没有启动,因此无法运行
* 可执行(Runnable):其他线程调用了处于新建状态线程的 start 方法,该线程对象将转换到“可执行状态”
* 线程拥有获得 CPU 控制权的机会,处在等待调度阶段
* 运行(Running):处在“可执行状态”的线程对象一旦获得了 CPU 控制权,就会转换到“执行状态”
* 在“执行状态”下,线程状态占用 CPU 时间片段,执行 run 方法中的代码
* 处在“执行状态”下的线程可以调用 yield 方法,该方法用于主动出让 CPU 控制权。
* 线程对象出让控制权后回到“可执行状态”,重新等待调度。
* 阻塞(Blocking):线程在“执行状态”下由于受某种条件的影响会被迫出让 CPU 控制权,进入“阻塞状态”。
* 进入阻塞状态的三种情况:调用 sleep 方法,调用 join 方法,执行 I/O 操作
* 死亡(Dead):线程调用 stop()方法时或 run()方法结束后,即进入死亡状态.
*
*/
public class ThreadTest {
public static void main(String[] args) throws InterruptedException {
MyThread mt = new MyThread();
Thread th = new Thread(mt,"thread");
System.out.println("new后的状态:" + th.getState());
th.start();
System.out.println("start()后的状态:" + th.getState());
Thread.sleep(1000);
System.out.println("等待时的状态:" + th.getState());
Thread.sleep(4000);
System.out.println("结束后的状态:" + th.getState());
}
}
class MyThread implements Runnable{
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"end");
}
}
Java 线程的生命周期
最新推荐文章于 2023-07-13 22:50:38 发布