阅读量:0
在Java中,CountDownLatch类可以用来实现倒计时功能。CountDownLatch是一个同步辅助类,它允许一个或多个线程等待其他线程完成操作。
CountDownLatch的用法如下:
- 创建一个CountDownLatch对象,并指定计数器的初始值。
- 在需要等待的线程调用await()方法等待计数器归零。
- 在其他线程中,通过调用countDown()方法来减少计数器的值。
- 当计数器归零时,所有等待的线程将被唤醒并继续执行。
示例代码如下:
import java.util.concurrent.CountDownLatch; public class CountdownExample { public static void main(String[] args) { CountDownLatch latch = new CountDownLatch(3); new Thread(new Worker(latch, "Worker1")).start(); new Thread(new Worker(latch, "Worker2")).start(); new Thread(new Worker(latch, "Worker3")).start(); try { latch.await(); System.out.println("All workers have completed their tasks"); } catch (InterruptedException e) { e.printStackTrace(); } } static class Worker implements Runnable { private CountDownLatch latch; private String name; Worker(CountDownLatch latch, String name) { this.latch = latch; this.name = name; } @Override public void run() { System.out.println(name + " is working"); latch.countDown(); } } }
在上面的示例中,创建了一个CountDownLatch对象并指定初始值为3。然后创建了3个Worker线程,每个线程在执行时都会调用countDown()方法来减少计数器的值。最后在主线程中调用await()方法等待计数器归零,当所有Worker线程都完成任务后,主线程将被唤醒并输出提示信息。