java - 锁定java中的特定方法

标签 java ajax concurrency

在我的java web应用程序中,有一个操作可以更新订单对象并通过ajax调用(POST请求)将其保存在数据库中。

方法 saveOrder() 执行此操作, 如果多个用户执行相同的操作,则应该对该方法加锁,以便使用最新的数据执行写入事务。

类文件代码如下

public class OrderLoader extends JSONProcessSimple {

@override
public JSONObject exec(JSONObject jsonsent) throws JSONException, ServletException {
  JSONObject result = this.saveOrder(array);
  return result;
}

public JSONObject saveOrder(JSONArray jsonarray) throws JSONException {
        JSONObject jsonResponse = new JSONObject();
        //Write operation on DB
        return jsonResponse;
    }
}

是否可以通过同步方法,请建议我一个解决方案。

提前致谢!

最佳答案

根据您的应用程序的架构(它是否在集群环境中的多个并行实例中运行?),没有简单的解决方案;如果它仅在一个虚拟机中执行,synchronized 可能是一种方法。另外,请查看 java.util.concurrent.lock包。

对于更复杂的分布式方法,您可以实现基于数据库的锁。

关于java - 锁定java中的特定方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784249/

相关文章:

c# - 来自 ASP.NET MVC Ajax 表单的 HTTP POST 不包含提交按钮

php - 将 ajax 加载更多按钮添加到我的首页

concurrency - Swift 3 中的 dispatch_barrier_async 等效项

java - 获取节点及其具体子节点

java - 用于 Swing 的回流标签小部件

java - Java 是 "pass-by-reference"还是 "pass-by-value"?

jquery元素无法从显示的json调用

dictionary - 如何从并发映射写入中恢复?

scala - 控制 Akka 中消耗大量内存的 actor 的生成

java - 清除 Jframe 上的绘图