多线程开发中,经常会遇到某个操作需要等待其它线程处理完毕才能执行。比如主线程要等若干个数据库提交线程处理完毕后关闭数据库连接,如果用join会让线程变成顺序执行,失去了多线程的意义,如果用计数来标记逻辑上又混乱,这里介绍JAVA提供的一个多线程同步工具类:
java.util.concurrent.CountDownLatch
CountDownLatch使用很简单,在构造的时候指定线程的数量标记,每当一个子线程run()执行完毕以后调用一次其countDown()方法来标记一个线程执行结束。在主线程中通过await()方法来完成与其它线程的同步。
代码示例:
主线程中:
int threadsCount=100; CountDownLatch countDownLatch = new CountDownLatch(threadsCount) ; for(int i=0;i<threadsCount;i++) { new Thread(new SubThread(countDownLatch)).start(); } countDownLatch.await(); System.out.println(“所有线程执行完毕!”); |
子线程中代码:
class SubThread implements Runnable doSomething(); threadsSignal.countDown(); } |
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。