JAVA-----wait 和 notifyAll 的用法

僅提供學習,侵權必刪,如有錯誤,敬請告知

一、wait 和 notifyAll

package Suo8;

public class Huanxing {
	private static final String XIAOMING_STRING = "小明";
	private static volatile boolean zhuangtai = false;
	public static void xiaoming() {
		synchronized (XIAOMING_STRING) {
			System.out.println("小明在睡覺,三秒等待小李喚醒!");
			try {
				XIAOMING_STRING.wait();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("小明起牀,動作結束");
		}
	}
	public static void xiaoli() {
		System.out.println("三秒鐘時間到,小李準備喚醒小明");
		synchronized (XIAOMING_STRING) {
			XIAOMING_STRING.notifyAll();
		}
	}
	public static void main(String[] args) throws InterruptedException {
		Thread thread = new Thread() {
			@Override
			public void run() {
				// TODO Auto-generated method stub
				xiaoming();
			}
		};
		thread.start();
		while (!zhuangtai) {
			for (int i = 1; i <= 3; i++) {
				Thread.sleep(1000);
				System.out.println("已過去"+i+"秒");
			}
			zhuangtai = true;
		}
		Thread thread1 = new Thread() {
			@Override
			public void run() {
				// TODO Auto-generated method stub
				xiaoli();
			}
		};
		thread1.start();
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章