/** * @author aachen0 * @date 2018/4/3 16:05 * IDE:IntelliJ IDEA * 编写多线程应该程序,模拟多个人通过一个山洞的模型。这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒,随机生成10个人,同时准备过此山洞,显示一下每次通过山洞的人的姓名。 */ class ThroughCave { public static void main(String[] args) { // 建立并开启游客线程,进入等待 for (int i = 1; i < 11; i++) { new Thread(new Passenger("过客" + i)).start(); } // 开启山洞之门 Passenger.cave.usable = true; } } class Cave { private String name; boolean usable; Cave(String name) { this.name = name; } } class Passenger implements Runnable { private String name; static Cave cave = new Cave("泰山"); Passenger(String name) { this.name = name; } @Override public void run() { while (true) { synchronized (cave) { if (cave.usable) { System.out.println(this.name + ":可以通过山洞,正在穿过山洞"); cave.usable = false; try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(this.name + "已经通过"); cave.usable = true; cave.notify(); break; } else { System.out.println("山洞暂时不可用,请耐心等待"); try { cave.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } }
模拟多个人通过一个山洞的模型。这个山洞每次只能通过一个人
最新推荐文章于 2020-09-16 22:55:12 发布