我创建了一个创建 1000 个线程的程序,每个线程将 1 添加到变量 sum 中。我的问题是我得到的输出只有 1s。
这是程序:
class Threading implements Runnable{
T6_Q1 sumObject=new T6_Q1();
Thread t;
Threading(){
t=new Thread(this);
t.start();
}
@Override
public void run() {
setSumValue();
System.out.println(sumObject.getSum());
}
public void setSumValue(){
Integer value=sumObject.getSum().intValue()+1;
sumObject.setSum(value);
}
}
public class T6_Q1
{
Integer sum =new Integer(0);
public void setSum(int value){
this.sum=new Integer(value);
}
//method to get the sum value
public Integer getSum(){
return this.sum;
}
public static void main(String[] args) {
//launches 1000 threads
for(int i=1;i<=1000;i++)
{
new Threading();
}
}
}
即使我同步了 setSumValue 方法,我也只能得到 1s。我在这里做错了什么?(我是线程新手,所以仍然有点难以理解错误)
感谢您的时间。