第一节 CountDownLatch(1)初识CountDownLatch (2)详述CountDownLatch CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1,当计数器值到达0时,它表 ...
第一节 CountDownLatch
(1)初识CountDownLatch
(2)详述CountDownLatch
CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1,当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。
CountDownLatch中主要方法如下:
public CountDownLatch(int count),构造函数中的count(计数器)实际上就是闭锁需要等待的线程数量,这个值只能被设置一次,而且CountDownLatch没有提供任何机制去重新设置这个计数值。
public void countDown(),每调用一次这个方法,在构造函数中初始化的count值就减1,通知机制是此方法来完成的。
public void await() throws InterruptedException,调用此方法的当前线程会一直阻塞,直到计时器的值为0。
(3)CountDownLatch示例
package com.test;import java.util.concurrent.CountDownLatch;public class CountDownLatchDemo{ public static void main(String args[]) throws Exception{ CountDownLatch latch = new CountDownLatch(3); Worker worker1 = new Worker("Jack 程序员1",latch); Worker worker2 = new Worker("Rose 程序员2",latch); Worker worker3 = new Worker("Json 程序员3",latch); worker1.start(); worker2.start(); worker3.start(); latch.await(); System.out.println("Main thread end!"); } static class Worker extends Thread { private String workerName; private CountDownLatch latch; public Worker(String workerName,CountDownLatch latch) { this.workerName = workerName; this.latch = latch; } @Override public void run() { try { System.out.println("Worker:"+workerName +" is begin."); Thread.sleep(1000L); System.out.println("Worker:"+workerName +" is end."); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }//模仿干活; latch.countDown(); } }}
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:java并发:线程同步机制之计数器Exechanger
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。