首页 > 其他分享 >多线程案例 : 等待别人到达开饭

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

时间:2022-10-01 09:55:11浏览次数:50  
标签:Thread t5 开饭 util 案例 线程 ex new 多线程

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

代码演示

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

/**
 * @author Mxhlin
 * @Email [email protected]
 * @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();
    }
}

执行效果

在这里插入图片描述

标签:Thread,t5,开饭,util,案例,线程,ex,new,多线程
From: https://www.cnblogs.com/xhlin/p/16746827.html

相关文章

  • CountDownLatch在多线程统计另一个线程的动向
    CountDownLatch在CountDownLatch类里面有两个方法一个是await()字面意思是等待的一次,他和sleep()方法的区别就是sellp()会自己醒过来,而await()方法需要另一个方法来唤醒......
  • DEMO 双ALV 简单案例
    货铺QQ群号:834508274简单案例,上面ALV是Header,下面是Item。一个屏幕,俩控件效果:上面是BKPF数据,下面是BSEG数据.完整代码:*&-------------------------------------------------......
  • Java SE 宋红康 days02-高级篇-多线程
    1.进程和线程进程是程序的一次执行过程,或是正在运行的一个程序;是动态的过程,有它自身的产生、存在和消亡的过程(生命周期)进程作为资源分配的单位,系......
  • SpringBoot项目中自定义线程池与异步调用案例
    SpringBoot项目中自定义线程池与异步调用案例一、自定义线程池1、配置文件server:port:9006#线程池配置参数task:pool:corePoolSize:10#设置核心线程......
  • 多线程
    简介当考虑一些复杂的过程时,我们称之为工作流,它的各个部分可能会以不同的方式运行。有时行动一个接一个地进行,有时它们以随机的顺序相互重叠,有时事情同时并行。工作流可......
  • Curl用法及案例
    curl的用法指南不带有任何参数时,curl就是发出GET请求。$curlhttps://www.example.com上面命令向www.example.com发出GET请求,服务器返回的内容会在命令行输出。......
  • 四个典型的车联网案例,给你数据架构升级思路
    在车联网场景中,智能车辆会通过各类传感器定时采集车身状态信息,比如行驶速度、发动机转速、轮胎压力值、里程数等,此外,还会由某个事件触发产生车辆事件数据,比如门锁上防、撤......
  • java 多线程
    线程的状态:New、Runnable、Blocked、Waiting、Timedwaiting、Terminated  newThread()——>New、start()——>Runnable、等待资源——>Blocked、wait()——>waiting......
  • SpringBoot集成Dubbo案例
    SpringBoot集成Dubbo:Case​​1、什么是Duubo?​​​​2、概念架构​​​​2.1提供者​​​​2.2消费者​​​​2.3注册中心​​​​3、SpringBoot集成Dubbo步骤​​​​:o......
  • AM5728 Opencl 案例汇总:实现sobel算法,计算向量和,矩阵转置
    案例一:实现sobel算法OpenCV(Open Source Computer Vision Library)是一个基于BSD许可开源发行的跨平台计算机视觉库。实现图像处理和计算机视觉方面的很多通用计算。......