CountDownLatch面试题及答案
时间: 2023-10-17 14:33:29 浏览: 174
面试题和答案
以下是一个可能的面试题及答案:
问题:请简要介绍一下CountDownLatch。
答案:CountDownLatch是Java中的一个并发工具类,用于协调多个线程之间的执行顺序。它通过一个计数器来实现,计数器初始值为线程数,每个线程执行完任务后,计数器减1。当计数器为0时,所有线程开始执行下一步操作。常用于等待多个线程完成某个操作后再执行下一步操作。
问题:CountDownLatch的使用场景有哪些?
答案:CountDownLatch主要用于等待多个线程完成某个操作后再执行下一步操作。例如,当多个线程需要同时进行某个计算任务时,可以使用CountDownLatch来等待所有线程完成任务后再进行下一步操作。同时,CountDownLatch还可以用于多线程测试,例如测试多个线程同时执行某个任务的性能。
问题:CountDownLatch的实现原理是什么?
答案:CountDownLatch的实现原理是通过一个计数器来实现的。计数器初始值为线程数,每个线程执行完任务后,计数器减1。主线程可以调用CountDownLatch的await()方法来等待计数器归零,await()方法会一直阻塞直到计数器为0。
问题:CountDownLatch有哪些特点?
答案:CountDownLatch有以下几个特点:
1. CountDownLatch是一个计数器,初始值为指定的数值,用于表示需要等待的线程数量。
2. 当一个线程完成了它的任务后,调用CountDownLatch的countDown()方法将计数器减1。
3. 主线程可以调用CountDownLatch的await()方法来等待计数器归零,await()方法会一直阻塞直到计数器为0。
4. CountDownLatch是一次性的,一旦计数器归零,就不能再次使用。
5. CountDownLatch是线程安全的。
问题:CountDownLatch和CyclicBarrier有什么区别?
答案:CountDownLatch和CyclicBarrier都可以用于协调多个线程之间的执行顺序,但是它们的使用场景有所不同。CountDownLatch主要用于等待多个线程完成某个操作后再执行下一步操作,而CyclicBarrier主要用于等待多个线程到达某个屏障点后再同时执行下一步操作。此外,CountDownLatch是一次性的,一旦计数器归零,就不能再次使用,而CyclicBarrier可以重复使用。
阅读全文