多线程案例 : 等待别人到达开饭

这里我们要把别人当作一个线程。当每一个线程开启时,我们指定一个点,让他们同时到达并执行,所以使用CyclicBarrier设定一个障碍,并设置这个障碍的参数,指定规则由多少个线程同时到达才开启。不然就在此等待后面的线程。

代码演示

import java.util.Random;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.TimeUnit;

/**
 * @author Mxhlin
 * @Email fuhua277@163.com
 * @Date 2022/10/01/9:30
 * @Version
 * @Description 案例 全员到期开饭
 */
public class T5 {
    CyclicBarrier bar= new CyclicBarrier(3,()-> System.out.println("到齐了,开饭了"));
    void set(int e){
        System.out.println(Thread.currentThread().getName()+"开始动身(需要"+e+"秒)...");
        try {
            TimeUnit.SECONDS.sleep(e);
            System.out.println(Thread.currentThread().getName() + "到达");
            bar.await();
        } catch (InterruptedException ex) {
            throw new RuntimeException(ex);
        } catch (BrokenBarrierException ex) {
            throw new RuntimeException(ex);
        }
    }

    public static void main(String[] args) {
        T5 t5 = new T5();
        Random rand = new Random();
        new Thread(()->t5.set(rand.nextInt(5,20)),"李四").start();
        new Thread(()->t5.set(rand.nextInt(5,20)),"王五").start();
        new Thread(()->t5.set(rand.nextInt(5,20)),"李六").start();
    }
}

执行效果

多线程案例 : 等待别人到达开饭

Original: https://www.cnblogs.com/xhlin/p/16746827.html
Author: 舍橘而取橙也
Title: 多线程案例 : 等待别人到达开饭

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/584976/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球