import java.util.concurrent.*;
import java.util.*;

class Person implements Runnable {
    protected String name;
    protected CyclicBarrier meet;

    Person(CyclicBarrier meet, String name) {
        this.name = name;
        this.meet = meet;
    }
    
    public void run() {
        try {
            System.out.println("once upon a time, there was a " + name);
            this.meet.await();
            System.out.println("once they met, the " + name + " happily lived ever after");
        } catch (InterruptedException | BrokenBarrierException e) {
            System.out.println("the " + name + " died without ever finding love");
        }
    }
}

class Main {
    public static void main(String[] args) throws InterruptedException {
        CyclicBarrier meet = new CyclicBarrier(2);
        
        Thread kingThread = new Thread(new Person(meet, "king"));
        Thread queenThread = new Thread(new Person(meet, "queen"));
        
        kingThread.start();
        queenThread.start();
        
        kingThread.join();
        queenThread.join();
    }
}

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: