1.线程的状态图
需要注意的是:线程调用start方法是使得线程到达就绪状态而不是运行状态
2.停止线程的两种方法
1)自然停止:线程体自然执行完毕
2)外部干涉:通过线程体标识
1.线程类中定义线程体能够使用的标识
2.线程体使用该标识
3.提供对外的方法改变该标识
4.外部根据条件调用该方法即可
ThreadStop.java:
1package 多线程; 2 3public class ThreadStop { 4 5 public static void main(String[] args) { 6 //真实角色 7 Study s = new Study(); 8 //匿名代理 9 new Thread(s).start(); 10 11 //外部干涉 12 for(int i=1;i<=100;i++) { 13 if(i==50) { 14 s.stop(); 15 } 16 System.out.println("main--->"+i); 17 } 18 } 19 20} 21 22class Study implements Runnable{ 23 24 //线程体类中定义线程体能够使用的标识 25 private boolean flag=true; 26 private int x=1; 27 @Override 28 public void run() { 29 // TODO Auto-generated method stub 30 //线程体改变该标识 31 while(flag) { 32 System.out.println("Study"+x+"秒"); 33 x++; 34 } 35 } 36 //对外提供方法改变标识 37 public void stop() { 38 this.flag=false; 39 } 40 41}
注意:代理类系统自动提供的stop方法不要使用,要用stop的话,自己在线程类里面写一个,因为代理类系统自动提供的stop已经过时,存在不安全性问题
