`
buzhucele
  • 浏览: 331671 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java同步例子之闭锁(CountDownLatch)

    博客分类:
  • java
阅读更多
在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待,在某些场景下同CyclicBarrier类似。
package concurrent;

import java.util.concurrent.CountDownLatch;

/**
 * 闭锁,要关注await,countDown的异常,
 * @author user
 *
 */
public class CountDownLatchTest {
	
	public void timeTasks(int nThreads, final Runnable task) throws InterruptedException{
		final CountDownLatch startGate = new CountDownLatch(1);
		for(int i = 0; i < nThreads; i++){
			Thread t = new Thread(){
				public void run(){
					try {
						startGate.await();
						task.run();
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			};
			t.start();
		}
		System.err.println("当前计数:"+startGate.getCount());
		startGate.countDown();
		System.err.println("当前计数:"+startGate.getCount());
	}

	/**
	 * @param args
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws InterruptedException {
		CountDownLatchTest test = new CountDownLatchTest();
		test.timeTasks(2, new Runnable() {			
			@Override
			public void run() {
				System.err.println("to do .....");				
			}
		});
	}

}
分享到:
评论

相关推荐

    J.U.C-AQS框架同步组件之闭锁CountDownLatch介绍

    CountDownLatch是Java并发编程中一个重要的同步工具类,它由Java 1.5引入,位于`java.util.concurrent`包下。这个工具类主要用于协调多个线程间的协作,使得某个线程(或一组线程)必须等待其他线程完成指定的任务后...

    利用 CountDownLatch 类实现线程同步

    Java 提供了多种工具来实现这样的同步机制,其中之一便是 `CountDownLatch` 类。`CountDownLatch` 是一个计数器,可以用于协调多个线程间的活动,等待所有线程完成各自的任务后,主线程或其他线程才能继续执行。 ...

    java.并发工具类CountDownLatch(处理方案示例).md

    java.并发工具类CountDownLatch(处理方案示例).md

    mybaits 多线程 实现数据批量插入 (运用CountDownLatch实现闭锁)

    在Java并发编程中,`CountDownLatch`是一个同步辅助类,它允许多个线程等待其他线程完成操作。在批量插入数据的场景下,可以创建一个CountDownLatch对象,初始化为线程的数量,每个线程处理完自己的数据后调用`...

    深入学习Java同步机制中的底层实现

    `ReentrantLock`和`CountDownLatch`是基于AQS的典型应用,通过它们我们可以深入理解Java并发编程的复杂性以及如何通过AQS来控制线程的同步和通信。通过深入学习这些机制,开发者可以更好地处理并发问题,提高程序的...

    Java并发包之CountDownLatch用法.docx

    `CountDownLatch`是Java并发包`java.util.concurrent`中的一个重要工具类,用于实现线程间的同步。它基于计数器的概念,初始化时设置一个非负的计数值,然后通过调用`countDown()`方法来递减这个计数器。主线程或...

    java并发工具类(CountDownLatch+Semaphore+Exchanger)

    Java并发工具类是Java并发编程中的重要组成部分,其中包括了多种实用的工具,如CountDownLatch、Semaphore和Exchanger,这些工具类极大地简化了多线程环境下的同步和协调问题。 1. **CountDownLatch**: ...

    java并发编程中CountDownLatch和CyclicBarrier的使用借鉴.pdf

    java并发编程中CountDownLatch和CyclicBarrier的使用借鉴 java并发编程中CountDownLatch和CyclicBarrier是两个非常重要的线程控制和调度工具,经常被用于解决多线程程序设计中的线程等待问题。本文将对...

    java并发编程中CountDownLatch和CyclicBarrier的使用.pdf

    在Java并发编程中,CountDownLatch和CyclicBarrier是两种非常重要的同步工具,用于协调多个线程之间的交互。它们都属于java.util.concurrent包下的类,为多线程编程提供了强大的支持。 **CountDownLatch** 是一个...

    Java concurrency之CountDownLatch原理和示例_动力节点Java学院整理

    CountDownLatch是Java并发编程中一个重要的工具类,用于协调多线程间的同步。它由Java并发包`java.util.concurrent`提供,主要用于解决一种场景:在主控线程等待多个子线程完成各自任务后再继续执行的情况。下面我们...

    java同步(一个网页)

    Java同步是Java编程中一个非常重要的概念,主要涉及到多线程环境下的程序控制。在Java中,当多个线程同时访问共享资源时,如果没有适当的同步机制,可能会导致数据不一致、竞态条件等问题。同步机制确保了在特定时间...

    Java中的CountDownLatch与CyclicBarrier:深入理解与应用实践

    在Java的并发编程中,CountDownLatch和CyclicBarrier是两个非常重要的同步工具,它们用于协调多个线程的执行顺序。本文将详细介绍CountDownLatch和CyclicBarrier的工作原理、使用场景以及如何在实际项目中应用它们。...

    Java多线程编程之CountDownLatch同步工具使用实例

    在Java多线程编程中,CountDownLatch是一种常用的同步工具,用于协调多个线程之间的协作,确保它们按照特定的顺序执行或者等待所有线程完成特定任务后再继续执行。这个类是java.util.concurrent包的一部分,提供了...

    java并发编程之同步器代码示例

    Java并发编程之同步器代码示例 ...Java并发编程之同步器代码示例展示了Java中的同步器机制,包括CountDownLatch、Semaphore、Barrier和Exchanger队列同步器等,帮助开发者更好地理解和使用Java中的并发编程技术。

    Java异步调用转同步方法实例详解

    Java中将异步调用转换为同步调用有多种方法,本文将详细介绍五种方法:使用wait和notify方法、使用条件锁、使用Future、使用CountDownLatch、使用CyclicBarrier。 1. 使用wait和notify方法 wait和notify方法是...

    Java开发宝典的所有例子

    5. **多线程**:Java支持多线程编程,例子会介绍Thread类的使用、线程同步方法(如synchronized关键字、wait()、notify()等)以及并发工具类如Semaphore、CountDownLatch等。 6. **网络编程**:Java的Socket编程...

    Java中CountDownLatch用法解析

    在Java并发编程中,`CountDownLatch`是一个非常重要的工具类,它位于`java.util.concurrent`包下,用于协调多个线程间的同步。`CountDownLatch`的主要作用是允许一个或多个线程等待其他线程完成操作。在上述例子中,...

    Java中的CountDownLatch类最全讲义

    3.2 使用CountDownLatch实现同步 主线程等待多个线程完成 4.1 场景介绍 4.2 使用CountDownLatch实现等待 CountDownLatch的其他应用场景 5.1 倒计时计时器 5.2 同时开始任务 5.3 等待多个资源就绪 CountDownLatch与...

    Java实现进程同步

    5. **CountDownLatch** 和 **CyclicBarrier**:这两个工具类可以帮助我们实现线程间的同步,例如,CountDownLatch可以让一组线程等待其他线程完成操作,而CyclicBarrier则允许一组线程到达一个屏障(或同步点)后...

Global site tag (gtag.js) - Google Analytics