This article explains how to test code that utilizes CountDownLatch in Java. CountDownLatch is a synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.
CountDownLatch, Java, Testing, Synchronization, Concurrency
import java.util.concurrent.CountDownLatch;
public class CountDownLatchExample {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(2);
new Thread(() -> {
try {
System.out.println("Thread 1 is doing some work");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
latch.countDown();
System.out.println("Thread 1 has finished work");
}
}).start();
new Thread(() -> {
try {
System.out.println("Thread 2 is doing some work");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
latch.countDown();
System.out.println("Thread 2 has finished work");
}
}).start();
latch.await(); // Wait for both threads to finish
System.out.println("Both threads have finished their work");
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?