1. 线程的状态
线程分为五大状态:创建状态、就绪状态、运行状态、阻塞状态、死亡状态
状态转化关系如下:
状态转化图.png
创建线程:使用new,当调用start()方法,线程进入就绪状态,但不代表立即调度执行
阻塞状态:当调用sleep,wait或同步锁定时时,线程进入阻塞状态,代码不往下执行,阻塞接触后,重新计入就绪状态等待cpu调度执行。
死亡状态:线程中断或结束,一旦进入死亡状态,就不能再次启动
2.线程停止
- 建议不要使用stop或者destroy等过时或者JDK不建议使用的方法
- 建议线程正常停止(利用次数,不建议死循环)
- 建议使用标识位
代码示例
public class stopTest implements Runnable { private boolean flag = true; @Override public void run() { int i = 0; while (flag) { System.out.println(i + "条鱼"); i++; } } public void stop(){ this.flag = false; } public static void main(String[] args) { stopTest st = new stopTest(); new Thread(st).start(); for(int i = 0; i < 500; i ++) { System.out.println("main" + i); if (i == 460) { st.stop(); System.out.println("线程终止!"); } } } }