Stringbuilder多线程问题?

问题见注释那一行

public static void main(String[] args) {
        StringBuilder stringBuilder=new StringBuilder();
        new Thread(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                stringBuilder.append("1");
                stringBuilder.append("2");
                stringBuilder.append("3");
                System.out.println("*"+stringBuilder.toString());
                //输出*123
            }
        }).start();
        String string=stringBuilder.toString();
        System.out.println(string);//运行什么也不输出,debug却能输出?
    }

图片说明

因为还没等new的thread执行到append,主线程已经执行到22行了,可以在21行下面sleep一下试试

主线程执行完了,新线程还没执行完,stringBuilder为空

public static void main(String[] args) {
Object a = new Object();
StringBuilder stringBuilder=new StringBuilder();
new Thread(() -> {
stringBuilder.append("1");
stringBuilder.append("2");
stringBuilder.append("3");
System.out.println("*"+stringBuilder.toString());
//输出*123
}).start();
try {
synchronized (a) {
a.wait(3000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
String string=stringBuilder.toString();
System.out.println(string);//运行什么也不输出,debug却能输出?
}