/*
停止线程:
1 stop 方法。
2 run 方法结束
怎么控制线程的任务结束?
任务中都会有循环结构(没有循环就不需要多线程了,开多线程就是怕这里循环影响其他),只要控制住循环就可以结束任务
控制循环通常就用定义标记来完成
如果线程处于了冻结状态 就无法读取标记 如何结束?
可以使用interrupt()方法将线程从冻结状态强制恢复到运行状态中来,让线程具有cpu的执行资格
但强制动作会发生InterruptedException 记得要处理
*/
class StopThread implements Runnable{
private boolean flag=true;
public void run(){
while(flag){
try{
wait();
}
catch(InterruptedException e){
System.out.println(Thread.currentThread().getName()+"...."+e);
}
System.out.println(Thread.currentThread().getName()+"....");
}
}
public void setFlag(){
flag=false;
}
}
class StopThreadDemo2{
public static void main(String[] args) {
StopThread st=new StopThread();
Thread t1=new Thread(st);
Thread t2=new Thread(st);
t1.start();
t2.start();
int num=1;
for(;;){
if(++num==50){
//st.setFlag();//此处将标记变为false 停止线程
t1.interrupt();
t2.interrupt();
break;
}
System.out.println("main..."+num);
}
}
}