1. 程式人生 > >java學習筆記-多執行緒程式設計模擬十個人過山洞

java學習筆記-多執行緒程式設計模擬十個人過山洞

編寫多執行緒應用程式,模擬多個人通過一個山洞的模擬。這個山洞每次只能通過一個人,每個人通過山洞的時間為5秒,隨機生成10個人,同時準備過此山洞,顯示一下每次通過山洞人的姓名。

 

使用執行緒同步,把山洞看做臨界資源,五秒內只允許一個人來訪問。

class cave {
	public synchronized void action(String name) {
		System.out.println(name + "此時正在過山洞");
	}
}
public class ThroughCave extends Thread{
	private String name;
	public static boolean hash[] = new boolean [20];
	cave c;
	public ThroughCave(String name,cave c) {
		this.name = name;
		this.c = c;
		start();
	}
	
	public void run() {
		try {
			c.action(name);
			Thread.sleep(5000);
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		
		cave c = new cave();
		for(int i=0;i<=10;i++)
			hash[i] = false;
		int cnt=0;
		while(cnt < 10) {
			int index  = (int) (Math.random()*10)+1;
			if( hash[index] == false) {
				String str = "name" + index;
				new ThroughCave(str,c);
				hash[index] = true;
				cnt++;
			}
		}
	}
}