How do you test code that uses CountDownLatch?

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");
    }

CountDownLatch Java Testing Synchronization Concurrency