【多线程】线程的停止
Thread类中stop方法停止线程存在安全隐患,怎么让一个线程停止运行呢?
线程的运行一般都是循环控制体,通过改变run方法
循环控制条件,即可让线程停止。
class ThreadStopDemo {public static void main(String[] args) {ThreadStop ts=new ThreadStop();Thread t1=new Thread(ts);Thread t2=new Thread(ts);t1.start();t2.start();int num=0;while(true){ if(num++==50) { ts.changeFlag(); break; }System.out.println(Thread.currentThread().getName()+"main...run"+num);} System.out.println("over");}}class ThreadStop implements Runnable{private boolean flag=true;public void run(){while(flag) { System.out.println(Thread.currentThread().getName()+"ThreadStop......run"); }}public void changeFlag(){flag=false;}}
class ThreadStopDemo1 {public static void main(String[] args) {ThreadStop ts=new ThreadStop();Thread t1=new Thread(ts);Thread t2=new Thread(ts);t1.start();t2.start();int num=0;while(true){ if(num++==50) { t1.interrupt(); t2.interrupt(); break; }System.out.println(Thread.currentThread().getName()+"main...run"+num);} System.out.println("over");}}class ThreadStop implements Runnable{private boolean flag=true;public synchronized void run(){while(flag) {try{wait();}catch (InterruptedException e){System.out.println(Thread.currentThread().getName()+"ThreadStop......Exception");flag=false;} System.out.println(Thread.currentThread().getName()+"ThreadStop......run"); }}}