问题见注释那一行
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却能输出?
}