比如一个客户表有id、personId(获得客户的人的id),有很多人做获取同一个客户操作,但是只有最先操作的人才可以获得要怎么做呢?关键是性能问题?我想到的只是同步锁定操作的方法,但是并不可行,锁定了方法后不同的客户id也不能同时操作了,各位请帮忙看看!谢谢!
[b]问题补充:[/b]
在代码里加一个同步的方法,也是我想到的,想问题下,如果不同的2人同时获取不同的客户,他们用的代码是不是同一个呢?那样的话,他们就是不能同时操作?
关于数据同步和并发(java)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- iteye_14762 2009-04-20 10:28关注
你的想法是可行的,只是对同一个Id进行锁就可以了,看了下面的代码就明白了:
[code="java"]public class Syn {
private static final int DEFAULT_LOCK_CLEAR_LIMIT = 1000; private int lockClearLimit = DEFAULT_LOCK_CLEAR_LIMIT; private final Map<Object, Object> LOCKS = new HashMap<Object, Object>(); /** * 如果是同一个id, 拿到的锁就是同一个,不同的就拿到不同的锁,所以不同的id可以同时操作的 * * @param id * @throws Exception */ public void syntest(String id) throws Exception { Object lock; synchronized (LOCKS) { if (LOCKS.size() > lockClearLimit) { LOCKS.clear(); } lock = LOCKS.get(id); if (lock == null) { lock = new Object(); LOCKS.put(id, lock); } } synchronized (lock) { // 做你要做的在这里... } }
}
[/code]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥15 maple软件,用solve求反函数出现rootof,怎么办?
- ¥65 汇编语言除法溢出问题
- ¥15 Visual Studio问题
- ¥20 求一个html代码,有偿
- ¥100 关于使用MATLAB中copularnd函数的问题
- ¥20 在虚拟机的pycharm上
- ¥15 jupyterthemes 设置完毕后没有效果