版权声明:转载请告知博主并要注明出处嗷~ 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++;
}
}
}
}