首页 > 其他分享 >juc下的方法

juc下的方法

时间:2023-12-19 17:46:09浏览次数:27  
标签:juc Thread CountDownLatch System 线程 countDownLatch println 方法

CountDownLatch是一个Java的并发工具类,用于使一个线程等待其他线程完成各自的工作。其主要用法如下:

  1. 创建一个CountDownLatch实例,指定初始计数器的值。

java复制代码
  CountDownLatch countDownLatch = new CountDownLatch(3);
  1. 在需要等待的线程中调用await()方法,该方法会阻塞当前线程,直到计数器减到0。

java复制代码
  countDownLatch.await();
  1. 在其他线程中,每次完成一项工作后,调用countDown()方法来减少计数器的值。

java复制代码
  countDownLatch.countDown();

当所有线程都完成了各自的工作后,计数器减为0,此时等待的线程会从await()方法返回,继续执行后续代码。

以下是一个简单的示例代码:

java复制代码
  public class CountDownLatchExample {
  public static void main(String[] args) throws InterruptedException {
  CountDownLatch countDownLatch = new CountDownLatch(3);
  Thread thread1 = new Thread(() -> {
  System.out.println("Thread 1 started");
  try {
  Thread.sleep(1000);
  } catch (InterruptedException e) {
  e.printStackTrace();
  }
  System.out.println("Thread 1 finished");
  countDownLatch.countDown();
  });
  Thread thread2 = new Thread(() -> {
  System.out.println("Thread 2 started");
  try {
  Thread.sleep(2000);
  } catch (InterruptedException e) {
  e.printStackTrace();
  }
  System.out.println("Thread 2 finished");
  countDownLatch.countDown();
  });
  Thread thread3 = new Thread(() -> {
  System.out.println("Thread 3 started");
  try {
  Thread.sleep(3000);
  } catch (InterruptedException e) {
  e.printStackTrace();
  }
  System.out.println("Thread 3 finished");
  countDownLatch.countDown();
  });
  thread1.start();
  thread2.start();
  thread3.start();
  countDownLatch.await(); // 等待所有线程完成工作后返回继续执行后续代码...
  }
  }

标签:juc,Thread,CountDownLatch,System,线程,countDownLatch,println,方法
From: https://www.cnblogs.com/fengok/p/17914323.html

相关文章

  • 培训机构如何避免员工跳槽?有什么挽留方法?
      一般情况下,当学校里最优秀的人才来找你商谈离职事宜的时候,再想留人往往已经为时太晚了,这一点请务必记住——这些员工早就得出了“是时候离开了”的结论,而且已经反复多次地看到(或者经历过)让他们不愿再留在你公司工作的事件。  如果他去的是对手的机构,你得到的结果已经不能叫......
  • Java Properties配置文件使用方法入门详解​
    JavaProperties配置文件使用方法详解使用配置文件的优点:好处1:可以把软件的设置永久化存储好处2:如果我们要修改参数,不需要改动代码,直接修改配置文件就可以了Properties配置文件文件后缀名为.properties,其内容是按键值对存储的。前面为键,后面为值。properties是一个双列集合,拥有Ma......
  • java,类、实例化、构造方法、this关键字、方法重载
    编写类的步骤:1、定义类名2、编写类的属性3、编写类的方法public 访问修饰符,表示在整个项目中都可以调用,也可以用其他词使用class关键字来定义类,如下,定义一个Cat类给了属性和方法,动态方法是没有static的publicclassCat{//属性Stringni_chen;Stringco......
  • 数组的方法整理
    vararray=[13,5,20,15,48,68]console.log("原数组"+array)//第一个组合字符串//varnews=array.join("//0")//第二个删除最后一个元素,返回最后一个值//varnews=array.pop();shift()删除第一个//第三个......
  • 深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
    Python中的面向对象编程涉及许多特殊方法,其中__new__和__init__是两个关键的方法。它们分别负责对象的创建和对象的初始化,在对象的生命周期中扮演着不同而又互补的角色。让我们深入探讨这两个方法,了解它们的作用、区别以及如何在实际开发中应用。1. __new__方法当谈到Pyth......
  • 提高Go爬虫效率的方法
     Go语言是一种高效、并发性能出色的编程语言,非常适合用于开发爬虫程序。然而,为了提高Go爬虫的效率,我们需要注意一些优化方法。本文将介绍一些提高Go爬虫效率的方法,帮助您优化和加速爬虫程序的执行。 1.使用并发处理: Go语言天生支持并发编程,可以充分利用多核处理器的优势。通过......
  • IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019、VS2022)、安装、
    原文链接:https://blog.csdn.net/qq_41185868/article/details/81052119最近开始使用vs2019,应该是最新的版本。之前都是vs2015,感觉19更智能,兼容性更好,速度也更快。详细了解下这几个版本。1、简介:MicrosoftVisualStudio(简称VS)是美国微软公司的开发工具包系列产品,功能完备的I......
  • 大语言模型训练数据常见的4种处理方法
    本文分享自华为云社区《浅谈如何处理大语言模型训练数据之一常见的数据处理方法》,作者:码上开花_Lancer。大语言模型训练需要数万亿的各类型数据。如何构造海量“高质量”数据对于大语言模型的训练具有至关重要的作用。虽然,截止到2023年9月为止,还没有非常好的大模型的理论分析......
  • 做一个wiki页面是体验HTML语义的好方法
    HTML语义:如何运用语义类标签来呈现Wiki网页在上一篇文章中,我花了大量的篇幅和你解释了正确使用语义类标签的好处和一些场景。那么,哪些场景适合用到语义类标签呢,又如何运用语义类标签呢?不知道你还记不记得在大学时代,你被导师逼着改毕业论文格式的情景,如果你回想一下,你在论文中使......
  • Unity3D 程序员常用的核心类及方法详解
    Unity3D是一款强大的游戏引擎,广泛应用于游戏开发领域。作为Unity3D程序员,掌握常用的核心类及方法是非常重要的。本文将详细介绍Unity3D中程序员常用的核心类及方法,并给出代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发......