java如何处理并发问题
以采购申请为例:采购申请是一个对象,申请编码是其中的一个属性,申请编码通过存储过程获取依次递增,如果有两个同时添加采购申请则会出现申请编码重复的问题获取申请编码的存储过程...
以采购申请为例:采购申请是一个对象,申请编码是其中的一个属性,申请编码通过存储过程获取依次递增,如果有两个同时添加采购申请则会出现申请编码重复的问题
获取申请编码的存储过程放在save方法里面,整个方法用了synchronized关键字 还是会出现重复的编码
跟多核处理器有关系吗? 展开
获取申请编码的存储过程放在save方法里面,整个方法用了synchronized关键字 还是会出现重复的编码
跟多核处理器有关系吗? 展开
展开全部
我最近也遇到了用synchronized还有重复编码的问题,不过我的项目中使用了负载均衡,也就是用了多个tomcat服务器,才会出现那种情况。
最终的解决方法是在代码中做了限制,每个tomcat取的编码加上一位标记,如第一个tomcat产生的编码最后一位加上"1",第二个tomcat产生的编码最后一位加上"2",有多少服务器,就加多少个。
最终的解决方法是在代码中做了限制,每个tomcat取的编码加上一位标记,如第一个tomcat产生的编码最后一位加上"1",第二个tomcat产生的编码最后一位加上"2",有多少服务器,就加多少个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用的什么数据库?ORACLE里面的SEQUENCE不会.
如果遇到这个问题了.有一个办法可以实现你的要求.将读取存储过程的代码块加锁.达到线程安全就OK了.
怎么会呢?
每个对象都只有一个锁标记,只有获得锁标记的进程才能执行里面的代码....
不是几核的问题...CPU看似可以处理很多请求.其实一个时刻也只能处理一个请求.因为它的速度相当快.所以我们就觉得它是一次处理很多请求...
如果遇到这个问题了.有一个办法可以实现你的要求.将读取存储过程的代码块加锁.达到线程安全就OK了.
怎么会呢?
每个对象都只有一个锁标记,只有获得锁标记的进程才能执行里面的代码....
不是几核的问题...CPU看似可以处理很多请求.其实一个时刻也只能处理一个请求.因为它的速度相当快.所以我们就觉得它是一次处理很多请求...
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询