背景
在单模块应用中,对同一个请求,需要进行同步。注意ReentrantLock的使用场景:
- 同一个线程中
- 同一个请求
RestController
@RestController
public class Controller {
private final ReentrantLock lock = new ReentrantLock();
...
@PostMapping
public User add(User user){
lock.lock();
try{
...
} finally{
lock.unlock();
}
}
...
}
后续
注意,这里使用场景,必须是在同一线程,同一个请求,才能够使用ReentrantLock。如果以后有机会,再尝试一下redis+spring boot来实现分布式锁。
参考
Guide to java.util.concurrent.Locks