Java并发工具:CountDownLatch应用示例
CountDownLatch是Java并发编程中的一个工具类,主要用于协调多个线程的执行。当count为0时,会触发一个屏障,所有等待该屏障的线程都会被唤醒。
下面是一个简单的CountDownLatch应用示例:
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public class CountDownLatchExample {
private CountDownLatch countDownLatch;
public CountDownLatchExample(int initialCount) {
this.countDownLatch = new CountDownLatch(initialCount);
}
// producer thread
public void produce() throws InterruptedException {
for (int i = 0; i < 10; i++) {
System.out.println("Produce: " + i);
countDownLatch.countDown();
}
System.out.println("Producer done.");
}
// consumer thread
public void consume() throws InterruptedException {
System.out.println("Consume start.");
countDownLatch.await(5, TimeUnit.SECONDS)); // wait for 5 seconds or until count reaches zero
if (countDownLatch.getCount() == 0) {
System.out.println("All consumers done.");
} else {
System.out.println("Some consumers still running.");
}
}
public static void main(String[] args) {
CountDownLatchExample example = new CountDownLatchExample(10); // initial count is 10
new Thread(example::produce).start(); // producer thread
new Thread(example::consume).start(); // consumer thread
}
}
在这个例子中,我们创建了一个初始计数为10的CountDownLatch。生产者线程会依次执行10次任务,并使用countDown()
方法减少计数。消费者线程会等待所有任务完成后才继续执行。
还没有评论,来说两句吧...