java里面的同步方法介绍_java – Spring MVC中的同步方法

我试图在spring控制器中使用synchronize方法.因为我们的支付网关点击方法[@RequestMapping(value =“/ pay”,method = RequestMethod.POST)]不同的交易[txn id:txn01& txn02]一次.但由于使用了同步块,这两个不同的事务处理逐个并行处理.

问题 – >为什么我在控制器中使用同步块就是说,事务[txn01]点击[@RequestMapping(value =“/ pay”,method = RequestMethod.POST)]两次,就像来自支付网关的重复呼叫一样.在完成第一次呼叫[后端处理]之前,我从支付网关获得相同转账的第二次呼叫.

有没有办法处理两个不同的事务并行使用同步块中的事务ID而不是重复调用我的意思是相同的转义.请指教.

如果我的问题不清楚,请告诉我.

@RequestMapping(value="/pay",method=RequestMethod.POST)

public String payAck(HttpServletRequest httpRequest,HttpServletResponse httpResponse,HttpSession session){

synchronized (this) {

return this.processPayAck(httpRequest,httpResponse,session);

}

}

public synchronized String processPayAck(HttpServletRequest httpRequest,HttpSession session){

// Payment Acknowledgment process here

if (sametranIDNotExists) {

// first call here

callWS(); - processing business logic.

return someURL;

} else {

// Gets second call here before first call completed

return someURL;

}

}

在同步块中使用实习生是否正确?

@RequestMapping(value="/pay",HttpSession session){

String tranID = httpRequest.getParameter("tranID");

synchronized (String.valueOf(tranID).intern()) {

return processPayAck(httpRequest,session);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值