/* 线程间的通信,通过对同类对象进行操作,达到对同一个对象的通信,如放入和输出, 同时我们要进行线程同步,但是还可能有问题,所以要用一个变量控制线程是否唤醒执行。 停止线程stop()已经过时,不能用了,所以如何解决呢?原理只有一种,run()方法结束。 开启多线程,运行代码通常是循环结构,只要控制循环,就可以让run()方法结束,线程结束 特殊情况:当线程处于冻结状态,线程就不会读取到标记,线程就不会结束。 */ class StopThread implements Runnable { private boolean flag = true; public synchronized void run() { while(flag) { System.out.println(Thread.currentThread().getName()+".....run"); } } public void changeFlag() { this.flag = false; } } class WaitDemo { 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) { st.changeFlag(); break; } System.out.println(Thread.currentThread().getName() + ":" + num); } } }