java中countdown的用法是什么
在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线程都完成任务后,主线程将被唤醒并输出提示信息。
相关问答