首页 > 其他分享 >CountDownLatch

CountDownLatch

时间:2024-08-15 15:41:31浏览次数:12  
标签:Thread currentThread System 线程 CountDownLatch latch out

import lombok.SneakyThrows;

import java.util.Date;
import java.util.concurrent.*;

/*
main上锁3
线程1获得锁
线程2获得锁
线程3获得锁
线程1释放锁2
线程2释放锁1
线程3释放锁0
main解锁0
 * */
public class T {

    @SneakyThrows
    public static void main(String[] args) {
        CountDownLatch latch = new CountDownLatch(3);

        System.out.println(Thread.currentThread().getName() + "上锁" + latch.getCount());

        new Thread(() -> {
            try {
                System.out.println(Thread.currentThread().getName() + "获得锁");
                Thread.sleep(200);
                latch.countDown();
                System.out.println(Thread.currentThread().getName() + "释放锁" + latch.getCount());
            } catch (Exception e) {

            }
        }, "线程1").start();

        new Thread(() -> {
            try {
                System.out.println(Thread.currentThread().getName() + "获得锁");
                Thread.sleep(500);
                latch.countDown();
                System.out.println(Thread.currentThread().getName() + "释放锁" + latch.getCount());
            } catch (Exception e) {

            }
        }, "线程2").start();

        new Thread(() -> {
            try {
                System.out.println(Thread.currentThread().getName() + "获得锁");
                Thread.sleep(1000);
                latch.countDown();
                System.out.println(Thread.currentThread().getName() + "释放锁" + latch.getCount());
            } catch (Exception e) {

            }
        }, "线程3").start();

        latch.await();
        System.out.println(Thread.currentThread().getName() + "解锁" + latch.getCount());
    }

}

标签:Thread,currentThread,System,线程,CountDownLatch,latch,out
From: https://www.cnblogs.com/goodluckxiaotuanzi/p/18361062

相关文章

  • 040_java.util.concurrent.CountDownLatch
    简单介绍CountDownLatch的通常用法和Thread.join()有点类似,等待其它线程都完成后再执行主任务。允许一个或多个线程等待其它线程的操作执行完毕后再执行后续的操作。先看看怎么用:publicclassCountDownLatchTest{publicstaticvoidmain(String[]args)throwsIn......
  • [Java并发]CountDownLatch
    CountDownLatch概述CountDownLatch一般用作多线程倒计时计数器,强制它们等待其他一组(CountDownLatch的初始化决定)任务执行完成。有一点要说明的是CountDownLatch初始化后计数器值递减到0的时候,不能再复原的,这一点区别于Semaphore,Semaphore是可以通过release操作恢复信号量的。Co......
  • 手写CountDownLatch
    手写CountDownLatch思路1. 设置aqs类中的状态为2;2. 调用await方法,让当前线程变为阻塞3. 调用countDown方法的时候状态-1,如果状态=0的情况下,则唤醒刚才阻塞的线程 publicclassMyCountDownLatch{privateSyncsync;privateMyCountDownLatch(intcount){......
  • 【转】-Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore该博客转载自​Matrix海子​的​Java并发编程:CountDownLatch、CyclicBarrier和Semaphore在java1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下......
  • 【转】-Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore该博客转载自​Matrix海子​的​Java并发编程:CountDownLatch、CyclicBarrier和Semaphore在java1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下......
  • 【转】-CountDownLatch详解
    CountDownLatch详解该博客转载自​爱宝贝丶的​CountDownLatch详解1.简介CountDownLatch中countdown是倒数的意思,latch则是门闩的含义。整体含义可以理解为倒数的门栓,似乎有一点“三二一,芝麻开门”的感觉。CountDownLatch的作用也是如此,在构造CountDownLatch的时候需要传入......
  • CyclicBarrier、CountDownLatch、Semaphore 的用法
    CyclicBarrier、CountDownLatch、Semaphore的用法1.CountDownLatch(程序计数器)CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。fi......
  • 深探Java线程池协同神器——CountDownLatch的源码奥秘与实战应用
    1.概述CountDownLatch,作为Java并发包java.util.concurrent下的重要一员,其设计理念在于提供一个线程同步工具,允许一个或多个线程等待其他线程完成操作后再继续执行。在工程师的眼中,它不仅是多线程编程中的一把利器,更是实现线程间高效协同的关键所在。2.源码分析构造函......
  • java 常用的辅助类:CountDownLatch,CyclicBarrier,Semaphore
    java常用的辅助类:1.CountDownLatch减法计数器2.CyclicBarrier加法计数器3.Semaphore同一时刻只允许固定(3)个线程执行,完成后另外固定(3)个线程再继续执行1.CountDownLatch:减法计数器.等待所有的执行完成CountDownLatchcountDownLatch=newCountDownLatch(5);//减法计数......
  • CountDownLatch 应用场景
    CountDownLatch倒计数器,是多线程并发时使用的类。主要有2个应用场景:协调子线程结束和子线程开始场景1:协调子线程结束,等待所有子线程结束countDown()执行多次-》await()执行一次例如:组织4个人开会,所有人员都到齐就开始publicclassCountDownLatchTest1{publicst......