java学习笔记-多线程编程模拟十个人过山洞

版权声明:转载请告知博主并要注明出处嗷~ https://blog.csdn.net/Akatsuki__Itachi/article/details/82972226

编写多线程应用程序,模拟多个人通过一个山洞的模拟。这个山洞每次只能通过一个人,每个人通过山洞的时间为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++;
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/Akatsuki__Itachi/article/details/82972226