java學習筆記-多執行緒程式設計模擬十個人過山洞
阿新 • • 發佈:2018-11-10
編寫多執行緒應用程式,模擬多個人通過一個山洞的模擬。這個山洞每次只能通過一個人,每個人通過山洞的時間為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++; } } } }