乐观锁的Java实现例子
时间: 2023-09-02 13:12:09 浏览: 77
乐观锁的Java实现例子可以参考以下代码:
```java
public class OptimisticLockDemo {
public static void main(String[] args) {
// 模拟两个线程同时修改同一条数据的场景
new Thread(() -> {
// 查询出数据
int version = queryVersion();
// 修改数据
updateData(version, "Thread1");
}).start();
new Thread(() -> {
// 查询出数据
int version = queryVersion();
// 修改数据
updateData(version, "Thread2");
}).start();
}
private static int queryVersion() {
// 模拟查询出的版本号为1
return 1;
}
private static void updateData(int version, String name) {
// 模拟修改数据前的一些操作
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 更新数据
if (version == queryVersion()) {
System.out.println(name + "更新成功");
} else {
System.out.println(name + "更新失败,数据已被其他线程修改");
}
}
}
```
这段代码模拟了两个线程同时修改同一条数据的场景,使用乐观锁来处理并发问题。其中,`queryVersion()`方法用于查询数据的版本号,`updateData()`方法用于修改数据并判断版本号是否发生变化。如果版本号没有变化,则说明数据没有被其他线程修改,可以更新成功;否则更新失败。
阅读全文