多线程异步调用的问题

请改造以下类,使之在多线程异步调用时,而不会出数据覆盖,即并发冲突
pulbi class Math {
private static int result = 0;
public static int sum(int a, int b){
result = a + b;
return result;
  }
}
请教大神 怎么做

suannai0314
鹳狸媛 楼主的这个问题解决了么?下边的答案能解决问题么?如果可以麻烦点击答案旁的√采纳哦~如果没有也可以将自己的答案贴上然后进行采纳的。
6 年多之前 回复

2个回答

如果不考虑同步控制粒度问题,直接把synchronized(Math.class) 加在当前类定义上的,是可行的

当然控制同步的代码段越小越好。synchronized控制的范围越小越好(实现方式有很多种)

最好是手动建个同步锁,
如:
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;
}

}
}

public class Math {
private static int result = 0;
public static int sum(int a, int b){
synchronized(Math.class) {
result = a + b;
return result;
}
 }
}
我认为是这样。这里有一个帖子,也是在讨论这个问题:
http://www.tc5u.com/java/1721723.htm

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问