我正在尝试制作一个小程序来演示同步,但无论出于何种原因,它都没有达到我的期望。关键是要创建 1000 个线程,并让它们都将 1 加到静态整数对象“sum”上。输出应该是 1000,但我得到不同的输出。这就像 addSum() 方法根本不同步。我试过延迟 println,认为它打印 sum 太快了,但这不是问题。我在这里想念什么?
public class sumsync implements Runnable {
public static Integer sum = new Integer(0);
public sumsync(){
}
private synchronized void addSum(int i){
sum += i;
}
@Override
public void run() {
addSum(1);
}
}
主类:
public class sumsyncinit {
private static final int max_threads = 1000;
public static void main(String[] args) {
sumsync task = new sumsync();
Thread thread;
for(int i=0; i<max_threads;i++){
thread = new Thread(task);
thread.start();
}
System.out.println(sumsync.sum);
}
}