【线程八•2】JAVA中COUNTDOWNLATCH使用demo

1 其实http://www.itzhai.com/the-introduction-and-use-of-a-countdownlatch.html 已经讲的很好了。

为什么又要写一下呢?

2 因为有一些没提到的,和新发现的。

2.1 CountDownLatch最重要的方法是countDown()和await(),前者主要是倒数一次,后者是等待倒数到0,如果没有到达0,就只有阻塞等待了。

2.2

这个方法可以用起来,他是这么用的:

 end.await(1,TimeUnit.SECONDS);

如果执行后,1秒没有完成,他就等不及了,会直接宣布结束,但是后面的线程依然会执行

Game Start

No.7 arrived

Game Over

No.8 arrived

No.10 arrived

No.9 arrived

No.6 arrived

No.2 arrived

No.1 arrived

No.3 arrived

No.5 arrived

No.4 arrived

2.3. 关于2.2中TimeUnit的用法,可以点进去看API说明。有很多实用方法。

System.out.println(TimeUnit.SECONDS.convert(1, TimeUnit.MINUTES));

输出:1 分钟转60秒

System.out.println(TimeUnit.SECONDS.toMinutes(600));

输出:600秒转10Minutes

3 ExecutorService用法

3.1 Executors.newFixedThreadPool(10);

3.2 exec.submit(run);(与exec.execute(run);区别)

将Runnable的对象传递给ExecutorService的submit方法,则该run方法自动在一个线程上执行,并且会返回执行结果Future对象,但是在该Future对象上调用get方法,将返回null。

3.3 exec.shutdown();

4 源码解析

Java多线程系列–“JUC锁”09之 CountDownLatch原理和示例 – 如果天空不死 – 博客园
http://www.cnblogs.com/skywang12345/p/3533887.html

发表评论

电子邮件地址不会被公开。