public class TestJoin {
    public static void main(String[] args) {
        TestJoinA a = new TestJoinA();
        TestJoinB b = new TestJoinB(a);
        b.start();
        a.start();
    }
}

class TestJoinA extends Thread {
    @Override
    public void run() {
        System.out.println("A");
    }
}

class TestJoinB extends Thread {
    private TestJoinA a;

    public TestJoinB(TestJoinA a) {
        this.a = a;
    }

    @Override
    public void run() {
        try {
            a.join();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("B");
    }
}