java乐观锁实现代码怎么写

avatar
作者
筋斗云
阅读量:0

在 Java 中,可以使用 synchronized 关键字或者 ReentrantLock 类来实现乐观锁。下面分别给出两种实现方式的示例代码:

  1. 使用 synchronized 关键字实现乐观锁:
public class OptimisticLockExample {     private int count = 0;      public synchronized void increment() {         int oldValue = count;         int newValue = oldValue + 1;          // 模拟耗时操作         try {             Thread.sleep(1000);         } catch (InterruptedException e) {             e.printStackTrace();         }          count = newValue;     }      public static void main(String[] args) {         OptimisticLockExample example = new OptimisticLockExample();          Thread t1 = new Thread(() -> {             example.increment();         });          Thread t2 = new Thread(() -> {             example.increment();         });          t1.start();         t2.start();          try {             t1.join();             t2.join();         } catch (InterruptedException e) {             e.printStackTrace();         }          System.out.println("Final count: " + example.count);     } } 
  1. 使用 ReentrantLock 类实现乐观锁:
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;  public class OptimisticLockExample {     private int count = 0;     private Lock lock = new ReentrantLock();      public void increment() {         lock.lock();         try {             int oldValue = count;             int newValue = oldValue + 1;              // 模拟耗时操作             try {                 Thread.sleep(1000);             } catch (InterruptedException e) {                 e.printStackTrace();             }              count = newValue;         } finally {             lock.unlock();         }     }      public static void main(String[] args) {         OptimisticLockExample example = new OptimisticLockExample();          Thread t1 = new Thread(() -> {             example.increment();         });          Thread t2 = new Thread(() -> {             example.increment();         });          t1.start();         t2.start();          try {             t1.join();             t2.join();         } catch (InterruptedException e) {             e.printStackTrace();         }          System.out.println("Final count: " + example.count);     } } 

以上是两种在 Java 中实现乐观锁的方式,分别使用 synchronized 关键字和 ReentrantLock 类。在实际开发中,可以根据具体场景选择合适的方式来实现乐观锁。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!