java如何处理并发问题

以采购申请为例:采购申请是一个对象,申请编码是其中的一个属性,申请编码通过存储过程获取依次递增,如果有两个同时添加采购申请则会出现申请编码重复的问题获取申请编码的存储过程... 以采购申请为例:采购申请是一个对象,申请编码是其中的一个属性,申请编码通过存储过程获取依次递增,如果有两个同时添加采购申请则会出现申请编码重复的问题
获取申请编码的存储过程放在save方法里面,整个方法用了synchronized关键字 还是会出现重复的编码

跟多核处理器有关系吗?
展开
 我来答
百度网友d41b00e
2010-05-28
知道答主
回答量:22
采纳率:0%
帮助的人:0
展开全部
这个和处理器多核没关系,问题应该是出在你的存储过程自增程序上,多个客户端同时发起申请时,自增程序都是在原申请编码基础上递增,所以取值相同。简单一点的做法是:新增一张临时表,每次发起申请时记录预分配的申请编码。自增程序在此编码的基础上递增即可
yonghui958
2010-05-29 · TA获得超过243个赞
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:115万
展开全部
我最近也遇到了用synchronized还有重复编码的问题,不过我的项目中使用了负载均衡,也就是用了多个tomcat服务器,才会出现那种情况。
最终的解决方法是在代码中做了限制,每个tomcat取的编码加上一位标记,如第一个tomcat产生的编码最后一位加上"1",第二个tomcat产生的编码最后一位加上"2",有多少服务器,就加多少个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
309511848
2010-05-28 · TA获得超过131个赞
知道答主
回答量:221
采纳率:0%
帮助的人:0
展开全部
用的什么数据库?ORACLE里面的SEQUENCE不会.
如果遇到这个问题了.有一个办法可以实现你的要求.将读取存储过程的代码块加锁.达到线程安全就OK了.

怎么会呢?
每个对象都只有一个锁标记,只有获得锁标记的进程才能执行里面的代码....

不是几核的问题...CPU看似可以处理很多请求.其实一个时刻也只能处理一个请求.因为它的速度相当快.所以我们就觉得它是一次处理很多请求...
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式