/*
线程间的通信,通过对同类对象进行操作,达到对同一个对象的通信,如放入和输出,
同时我们要进行线程同步,但是还可能有问题,所以要用一个变量控制线程是否唤醒执行。
停止线程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);
}
}
}