java多线程练习(一)

一、过山洞( 一次只能过1个人,一个人需要2S,在前一个人未完全通过之前后面的人不能进去)

    多线程实现5个人过山洞,且打印每个通过人的名称和序号

    ①先创建实现Runnable接口的山洞类

public class Tunnel implements Runnable {
    private Integer sequence = 1;

    @Override
    public void run() {
        cross();
    }

    public synchronized void cross() {
        try {
            System.out.println(Thread.currentThread().getName() + "第" + sequence + "个开始穿过山洞");
            Thread.sleep(2000);
            sequence++;
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

    ②五个人开始穿越

public class Start {
    public static void main(String[] args) {
        String[] peoples = {"A","B","C","D","E"};
        Tunnel tunnel = new Tunnel();
        for (String p : peoples) {
            //此处将人名作为线程名
            Thread t = new Thread(tunnel,p);
            t.start();
        }
    }
}

    运行结果

A第1个开始穿过山洞
D第2个开始穿过山洞
E第3个开始穿过山洞
C第4个开始穿过山洞
B第5个开始穿过山洞

二、过山洞加强版(不同组的人穿越不同的山洞,且每次打印山洞名称、通过人名称和顺序)



   

猜你喜欢

转载自blog.csdn.net/mxxrgxg/article/details/61197082