請改造以下類,使之在多線程異步調(diào)用時,而不會出數(shù)據(jù)覆蓋,即并發(fā)沖突
pulbi class Math {
private static int result = 0;
public static int sum(int a, int b){
result = a + b;
return result;
}
}
請教大神 怎么做
1 回答

慕碼人2483693
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個贊
如果不考慮同步控制粒度問題,直接把synchronized(Math.class) 加在當(dāng)前類定義上的,是可行的
當(dāng)然控制同步的代碼段越小越好。synchronized控制的范圍越小越好(實(shí)現(xiàn)方式有很多種)
最好是手動建個同步鎖,
如:
public class Math {
private static int result = 0;
public static final Object lock1 = new Object();
public static int sum(int a, int b){
synchronized (lock1) {
result = a + b;
return result;
}
}
}
添加回答
舉報(bào)
0/150
提交
取消