首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将方法设为同步后发生的并发问题

将方法设为同步后发生的并发问题
EN

Stack Overflow用户
提问于 2012-10-19 19:21:44
回答 3查看 102关注 0票数 0

我在Web服务中有一个方法,它执行一些数据库插入。我想要对该方法的单一访问,这就是为什么我将一个方法设置为同步的原因。但是,当同时对此方法进行多次调用时,同步选项不起作用。该方法的结构如下

代码语言:javascript
复制
public synchronized void display() {
   //DataBase updations and Transactions.    
}

有没有人能提出任何解决方案来避免这个问题。

EN

回答 3

Stack Overflow用户

发布于 2012-10-19 19:24:21

问题不在于该方法,而在于包含该方法的代码的多个实例。

票数 0
EN

Stack Overflow用户

发布于 2012-10-19 19:25:34

如何确定同步不起作用?您知道同步是在对象级别上工作的,所以如果方法在servlet中,并且servlet容器创建了该servlet的多个实例,那么您就不走运了--每个servlet实例都可以同时运行“同步”方法。

另外,为什么要在代码中序列化DB操作-任何DB都完全能够做到这一点,cf。事务性和ACID原则。

干杯,

票数 0
EN

Stack Overflow用户

发布于 2012-10-19 20:20:19

你能试着跟踪一下吗-

  1. 创建一个单独的类来处理所有的数据库操作,如插入、删除、创建表等。
  2. Make synchronized all method。
  3. 此类应在代码中初始化一次。
  4. 从该类创建一个外部数据库连接,并将该连接设置为此类(此setter方法必须同步)。记住,连接应该在你的代码中创建一次,就像上面处理数据库的类的对象一样。然后
  5. 在多个线程中使用这个类的同一对象。这应该是可行的。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12973179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档