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

这里我们要把别人当作一个线程。当每一个线程开启时,我们指定一个点,让他们同时到达并执行,所以使用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)

大家都在看

  • Jmix- 业务系统高效开发的少代码平台

    企业在数字化转型的过程中,都面临将现有的业务流程进行”软件化”的过程。然而,在我们的印象中,通常会觉得针对业务系统的软件开发不是特别高效。这背后有很多原因,…

    Java 2023年6月15日
    087
  • Java SE-集合

    Java 的集合体系 Java集合可分为两大体系:Collection 和 Map 1.常见的Java集合如下: Collection接口:单列数据,定义了存取一组对象的方法的集合…

    Java 2023年6月10日
    084
  • Java使用正则解决问题

    分析以下需求,并用代码实现(根据描述写匹配手机号和邮箱的正则表达式)1.根据描述写出正则表达式(1)手机号正则:第一位为1第二位为3或4或5或7或8第三~十一位为0~9的其中一个数…

    Java 2023年6月5日
    084
  • iphone 开发学习笔记七

    本篇算是该系列最后一篇,虽不能说是很熟,但使用MonoTouch 开发的其本方法是掌握了,主要是完成当初的任务,实现地图开发包在iPhone上的实现。使用MonoTouch ,.N…

    Java 2023年5月29日
    052
  • 9.Hystrix快速失败、降级及熔断机制

    降级介绍 降级是一种”无奈”的选择,就是俗称的备胎 Command降级需要fallback方法 ObservableCommand降级实现resumeWit…

    Java 2023年6月8日
    089
  • 服务调用过程

    前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 源码分析均基于官方Demo,路径:dubbo/dubbo-demo 如果没有…

    Java 2023年6月16日
    071
  • java实现文件加解密方案

    0、前序 上传加密:客户端上传文件,后台加密,将加密后的文件存储到文件服务器 下载解密:客户端请求文件,后台从文件服务器获取密文,解密返回客户端 注:对文件服务器上存储的文件需要做…

    Java 2023年6月7日
    093
  • 深入学习SpringBoot

    快速上手SpringBoot 1.1 SpringBoot入门程序开发 SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来 简化Spring应用的 初始搭建…

    Java 2023年6月6日
    067
  • @Aspect一直无法自动使用的原因

    使用注解实现AOP的时候遇见了一个问题 org.aspectj aspectjweaver 1.9.6 runtime 从网上拉下来的aspectj依赖没注意带了一个 <sc…

    Java 2023年6月15日
    076
  • 两天两夜,1M图片优化到100kb!

    坦白从宽吧,我就是那个花了两天两夜把 1M 图片优化到 100kb 的家伙——王小二! 自从因为一篇报道登上热搜后,我差点抑郁,每天要靠 50 片安眠药才能入睡。 网络上曝光的那些…

    Java 2023年6月9日
    078
  • 求解马走棋问题C/C++

    在 m 行 n 列的棋盘上有一个中国象棋中的马,马走日字且只能向右走。 请找到可行路径的条数,使得马从棋盘的左下角 (1,1)(1 ,1 ) 走到右上角 (m,n)(m ,n )。…

    Java 2023年6月5日
    0124
  • python爬虫配置IP代理池(ProxyPool)

    关注我的公众号【靠谱杨的挨踢生活】回复 ProxyPool可以免费获取网盘链接。也可自行搜索下载:https://github.com/Python3WebSpider/Proxy…

    Java 2023年6月15日
    093
  • 记一次base64转MultipartFile的坑

    记一次base64转MultipartFile的坑 现在有个需求是接收base64编码的图片,然后上传到文件服务器上,由于文件服务的代码是固定的代码不能修改,所以只能适配接口。文件…

    Java 2023年6月9日
    0100
  • Mybatis-Plus自动生成器生成代码基于springboot项目启动

    创建springbootweb项目 pom.xml 导入 MBP 依赖 <dependency> <groupid>com.baomidou</gro…

    Java 2023年6月15日
    084
  • 面向对象3(Java)

    即同一方法可以根据发送对象的不同而采用多种不同的行为方式 一个对象的实际类型是确定的,但是可以指向对象的引用类型可以很多 多态存在的条件:a.有继承关系;b.子类重写父类方法;c….

    Java 2023年6月9日
    071
  • Java微服务:缓存穿透和缓存雪崩

    Java微服务:缓存穿透和缓存雪崩 缓存穿透 缓存是对数据库的一道保护墙,缓存穿透就是冲破了我们的保护墙。即 调用方传来的永远都是我们缓存中不存在的Key,这样每次都需要去数据库中…

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