多线程——过山洞

来源:互联网 发布:数据库点赞表 编辑:程序博客网 时间:2024/04/29 01:27

编写多线程程序,模拟多个人通过一个山洞。

这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。

随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出每次通过山洞的人名。

提示:利用线程同步机制,过山洞用一条输出语句表示,该输出语句打印输出当前过山洞的人名,

 每个人过山洞对应一个线程,哪个线程执行这条输出语句,就表示哪个人过山洞。

public class Example1 {public static void main(String[] args) {// TODO Auto-generated method stubCaveCross cc=new CaveCross();new Thread(cc,"01").start();new Thread(cc,"02").start();new Thread(cc,"03").start();new Thread(cc,"04").start();new Thread(cc,"05").start();new Thread(cc,"06").start();new Thread(cc,"07").start();new Thread(cc,"08").start();new Thread(cc,"09").start();new Thread(cc,"10").start();}}class CaveCross implements Runnable{private int people=10;public void run(){while(true){if(people>0){Thread th=Thread.currentThread();//获取当前进程String th_name=th.getName();System.out.println(th_name+"正在通过山洞,"+"还有"+--people+"个人未通过山洞");try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}else break;}}}