美文网首页
CountDownLatch使用

CountDownLatch使用

作者: jack4c | 来源:发表于2017-09-12 15:11 被阅读0次

CountDownLatch使用

CountDownLatch是java中的一个同步工具类.用于对线程的阻塞和唤醒

使用

1.初始化

在初始化创建对象时需要传入一个int类型的count值.

2.方法

  • getCount 获取当前对象的count 值.
  • countDown 将当前对象的count 值减1.
  • await调用CountDownLatch对象的await方法时会阻塞当前线程,当这个对象的count为0时会唤醒这个对象调用await方法阻塞的所有线程 .
  • await(long time,TimeUnit unit) await 方法重载,在如果阻塞的时间超过定义的超时时间,线程自动唤醒

代码示例:

package concurrent;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
     public class Test {
        private CountDownLatch countDownLatch = new CountDownLatch(1);
        public void method1(String name) {
            try {
                //countDownLatch.await();  //阻塞线程,到countDownLatch对象的count等于0时唤醒
                 countDownLatch.await(10L,TimeUnit.SECONDS); //阻塞线程,如果在10秒后还没有被唤醒,将自动唤醒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(System.currentTimeMillis() + " " + Thread.currentThread().getName() + " - " + name + " 被唤醒");
        }
    
        public void method2(String name) {
            System.out.println(Thread.currentThread().getName() + "  " + name);
            try {
                TimeUnit.SECONDS.sleep(5);
                countDownLatch.countDown(); // 将count值减1
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) throws InterruptedException {
            Test test = new Test();
            new Thread(() -> {
                test.method1("method1");
            }).start();
            new Thread(() -> {
                test.method2("method2");
            }).start();
            new Thread(() -> {
                test.method1("method3");
            }).start();
        }
    
}

使用场景

在需要线程同步的场景下使用,比使用wait notify 方法更为灵活

相关文章

  • 8. Java中的并发工具类

    CountDownLatch 作用:等待一个或多个线程执行完成; 使用: CountDownLatch cdl =...

  • JUC并发编程-6.CountDownLatch源码解析

    1.CountDownLatch相关API使用 运行结果 2.CountDownLatch相关API解读 new ...

  • countdown设计模式

    使用JDK自带的countdownLatch

  • CountDownLatch 使用

    java.util.concurrent.CountDownLatch是一个并发结构,它允许一个或多个线程等待一组...

  • CountDownLatch使用

    该类是一个同步功能的辅助类,使用效果是给定一个技术,当使用这个类的线程判断计数不为0时,则成wait状态,如果为0...

  • CountDownLatch使用

    CountDownLatch使用 CountDownLatch是java中的一个同步工具类.用于对线程的阻塞和唤醒...

  • CountDownLatch使用

    CountDownLatch是JAVA提供在java.util.concurrent包下的一个辅助类。 内部有一个...

  • CountDownLatch使用

    CountDownLatch结合多线程可以控制并发,异步先行,并发阻塞,充分利用多核cpu,同时处理多项事情,底层...

  • CountDownLatch使用

    之前开发遇到一个场景,需要开启多线程上传图片到阿里云,将所以图片上传完成后,将图片地址一起提交到后端。那么这里就需...

  • 并发工具类

    CountDownLatch 简介 CountDownLatch 允许一个或多个线程等待其他线程完成操作。 使用场...

网友评论

      本文标题:CountDownLatch使用

      本文链接:https://www.haomeiwen.com/subject/mqmcsxtx.html