CountDownLatch的用法
时间: 2023-08-26 11:12:00 浏览: 95
回答: CountDownLatch是一个非常有用的多线程同步工具。它提供了await()和countDown()两个主要方法。await()方法可以使当前线程在CountDownLatch的计数减至零之前一直等待,除非线程被中断。而countDown()方法的作用则是减小计数器的值。当计数器变为0时,等待在CountDownLatch上的线程将被唤醒,继续执行其他任务。同时,也可以通过给CountDownLatch加一个延迟时间来实现延迟唤醒。在CountDownLatch的构造方法中,需要指定初始值。只有当所有的countDown()方法都被调用,使计数器减至零时,await()方法才会返回。这使得CountDownLatch非常适用于等待多个子任务全部完成后再执行主线程的场景。
相关问题
countdownlatch用法
CountDownLatch是Java中一种多线程并发编程工具,它可以让一个线程等待其他多个线程执行完毕后再执行。其用法是:首先创建一个CountDownLatch对象,然后在多个线程中并行执行任务,在最后一个线程执行结束时,调用CountDownLatch的countDown()方法,每次调用会让计数器减1;而等待这些线程的主线程则调用CountDownLatch的await()方法,该方法会使主线程等待直到计数器为0为止,然后主线程继续执行。通过CountDownLatch可以实现多线程的同步和协作。
CountDownLatch用法
CountDownLatch是Java中提供的一个同步工具类,它可以用来控制一个或多个线程等待多个线程的操作完成。
CountDownLatch的用法如下:
1. 创建一个CountDownLatch对象,指定需要等待的线程数。
```
CountDownLatch latch = new CountDownLatch(5);
```
2. 每个需要等待的线程执行完后调用CountDownLatch的countDown方法减少计数器。
```
latch.countDown();
```
3. 等待所有线程执行完毕后,调用CountDownLatch的await方法进行等待。
```
latch.await();
```
4. 在所有线程执行完毕后,主线程或其他线程可以继续执行自己的操作。
示例代码:
```
import java.util.concurrent.CountDownLatch;
public class CountDownLatchDemo {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(5);
for (int i = 0; i < 5; i++) {
new Thread(() -> {
System.out.println(Thread.currentThread().getName() + " is working...");
try {
// 模拟线程执行时间
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " done");
latch.countDown();
}).start();
}
System.out.println("Waiting for all threads to finish...");
latch.await();
System.out.println("All threads have finished, continue to execute the main thread.");
}
}
```
运行结果:
```
Waiting for all threads to finish...
Thread-0 is working...
Thread-2 is working...
Thread-1 is working...
Thread-3 is working...
Thread-4 is working...
Thread-1 done
Thread-3 done
Thread-0 done
Thread-2 done
Thread-4 done
All threads have finished, continue to execute the main thread.
```
阅读全文