线程唤醒

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

停止线程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);
		}

	}
}

原文地址:https://www.cnblogs.com/dengshiwei/p/4258544.html