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