java多线程组件一:CountDownLatch使用方法的总结
2012-07-12 22:11
856 查看
根据从资料上以及习题时间的总结CountDownLatch 做的事情就是通过对一个计数器的控制,来保证一批动作的执行,且同步性保证个这个计数器的值在多线程之间共享的有效性.
下面有个简单的例子可以说明这点:
下面有个简单的例子可以说明这点:
public class CountDownLatchDemo { public static void main(String[] args) { /* * CountDownLatch's parameter will decide whether to print waiting * information * if parameter >10 will never can't to execute finished information * if parameter==0 , don't need to waiting call working() */ //in think in java construct parameter is 100, will lead to never print waiting finished information CountDownLatch latch = new CountDownLatch(10); ExecutorService es = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { es.execute(new WaitingTask(latch)); } for (int i = 0; i < 10; i++) { es.execute(new WokingTask(latch)); } es.shutdown(); System.out.println("Existing"); } } class WokingTask implements Runnable { private static int count = 0; private int id = count++; private final CountDownLatch latch; public WokingTask(CountDownLatch latch) { this.latch = latch; } public String toString() { return "working:" + id; } public void run() { try { working(); latch.countDown(); } catch (Exception ex) { ex.printStackTrace(); } } public void working() { System.out.println(this + "working"); try { TimeUnit.MILLISECONDS.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class WaitingTask implements Runnable { private static int count = 0; private int id = count++; private final CountDownLatch latch; public WaitingTask(CountDownLatch latch) { this.latch = latch; } public String toString() { return "waiting:" + id; } public void run() { try { latch.await(); System.out.println(this + " waiting finished...."); } catch (Exception ex) { ex.printStackTrace(); } } }
相关文章推荐
- Java多线程20:多线程下的其他组件之CountDownLatch、Semaphore、Exchanger
- java多线程组件二:DelayQueue的使用方法
- Java多线程之~~~使用CountDownLatch来同步多个线程实现一个任务
- 【Java】多线程系列(二)之CountDownLatch的使用
- Java多线程之CountDownLatch同步器的使用(六)
- Java多线程20:多线程下的其他组件之CountDownLatch、Semaphore、Exchanger
- Java多线程系列-多线程下的其他组件之CountDownLatch、Semaphore、Exchanger
- Java中CountDownLatch的使用和求多线程的运行时间
- Java多线程20:多线程下的其他组件之CountDownLatch、Semaphore、Exchanger
- java 多线程 27 :多线程组件之CountDownLatch
- Java多线程编程之CountDownLatch同步工具使用实例
- [Java并发]使用CountDownLatch和CyclicBarrier等待多线程完成
- Java多线程20:多线程下的其他组件之CountDownLatch、Semaphore、Exchanger
- 【Java多线程】CountDownLatch、CyclicBarrier和Semaphore使用
- Java5 多线程(六)--CountDownLatch 同步工具类
- java.util.concurrent.CountDownLatch 使用
- java使用多线程的一些总结
- 【JAVA基础知识总结】Java I/0流概述以及使用方法
- Java并发之CountDownLatch的使用
- 初学Java多线程:join方法的使用