Java 多线程结束 的第二种方法 interrupt方法

xiaoxiao2021-02-28  86

/* 停止线程: 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); } } }
转载请注明原文地址: https://www.6miu.com/read-36415.html

最新回复(0)