我有以下代码,但它的输出不是我所期望的:
public class ThreadManager {
public static void main(String[] args) {
Resource sharedResource = new Resource();
new Thread(new MyThread(sharedResource)).start();
new Thread(new MyThread(sharedResource)).start();
}
}
class MyThread implements Runnable{
Resource rs = null;
public MyThread(Resource param) {
this.rs = param;
}
@Override
public void run() {
this.rs.add(Thread.currentThread().getName());
System.out.println(this.rs.str);
}
}
class Resource{
StringBuilder str = new StringBuilder();
public void add(String text){
str.append(text);
}
}
输出是:
Thread-0Thread-1
Thread-0Thread-1
但是怎么...
这里如果线程0首先执行,那么输出应该是
Thread-0
Thread-0Thread-1
但这里的问题是第一行输出中的线程 1。