ReentrantLock锁不起作用
插入数据之前需要先检查数据库中没有了才插入,没加锁之前发现如果两次添加请求很接近会出现重复插入情况,所以添加了一个ReentrantLock锁,但是实际使用发现还是会出现重复插入。
锁添加在Spring 的 Controller 里:
@RestController
@RequestMapping("/user")
public class UserAction {
Lock lock = new ReentrantLock();
@RequestMapping(value = "add", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public ResponseEntity addUser(User user) {
lock.lock();
try {
//检查数据库是否已有用户 没有的话才加入
//代码略
} finally {
lock.unlock();
}
}
春哥信徒A
9 years, 3 months ago