为什么要使用分布式锁
针对于同一个接口,如果在同一时间有大量请求来访问,如果这些需要对数据库中的同一条数据进行修改,这条就可能出现不可控制的问题。
示例代码
public class TestService {
// 模拟数据库的数据
private static volatile int num = 2;
// 模拟修改数据库的数据
public static void decrment() {
try {
if (num > 0) {
// 模拟查库时间
Thread.sleep(100);
num--;
}
} catch (Exception e) {
}
}
}
// 模拟一个服务
public class Server1 {
private static Object object = new Object();
public static void oversold(int reqNums) {
try {
for (int i = 0; i < reqNums; i++) {
// 一个线程模拟一个请求
new Thread(() -> {
TestService.decrment();
}).start();
<