package com.sxt.io2;
public class TeminateThread implements Runnable{
private String name;
//加入标识
private boolean flag=true;
public TeminateThread(String name) {
this.name = name;
}
@Override
public void run() {
int i=0;
//关联标识,true为运行,false为停止
while(flag){
System.out.println(name+"-->"+(i++));
}
}
//对外提供方法改变标识
public void terminate(){
this.flag=false;
}
public static void main(String[] args) {
TeminateThread tt=new TeminateThread("C罗");
new Thread(tt).start();
//主线程运行三十次时终止另一个线程
for(int i=0;i<100;i++){
System.out.println("D罗-->"+i);
if(i==30) {tt.terminate();
System.out.println("stop......");}
}
}
}
问题总结:
1.对外提供方法改变标识符,而不是对内
2.main方法中将对象new出来后保存在一个变量中,方便后期调用。若使用new TerminateThread("").terminate的方法,则两次的对象不能代表是同一个,运行结果会一直运行下去,线程不能达到终止的效果
3.使用主线程对另一线程的终止