/* import java.util.concurrent.locks.*; //当线程 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 Test { 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++==60) { //如果线程在调用 Object 类的 wait()、wait(long) //或 wait(long, int) 方法,或者该类的 join()、join(long)、 //join(long, int)、sleep(long) 或 sleep(long, int) 方法过程中受阻, //则其中断状态将被清除,它还将收到一个 InterruptedException。 //st.changeFlag(); t1.interrupt(); t2.interrupt(); break; } System.out.println(Thread.currentThread().getName()+"-----"+num); } System.out.println("over"); } } //setDaemon(boolean on)将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时, //Java 虚拟机退出。 //join() t1.join()等待t1线程结束后正在运行的线程再运行。 //yield()暂停当前正在执行的线程对象,并执行其他线程。 */