class StopThread implements Runnable { private boolean flag = true; public synchronized void run() { while(flag) { try { wait(); } catch(InterruptedException e) { System.out.println(Thread.currentThread().getName()+"....Exception"); flag = false; } System.out.println(Thread.currentThread().getName()+"....run"); } } public void changeFlag() { flag = false; } }
class StopThreadDemo { 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 = 0; while(true) { if(num++==10) { st.changeFlag(); break; } System.out.println(Thread.currentThread().getName()+"....main"+num); } } }