一、悲观锁
悲观锁是一种比较保守的锁定机制,它假定其他事务可能会修改数据,所以在整个事务处理期间,该事务将一直持有锁定,以防止其他事务的干扰。在Java中,悲观锁通常是使用synchronized关键字实现的,它可以保证在同一时间只有一个线程可以访问某个资源,从而避免并发冲突。
二、乐观锁
乐观锁是一种比较乐观的锁定机制,它假定其他事务不会修改数据,所以在整个事务处理期间,该事务不会持有任何锁定,从而提高系统的性能。在Java中,乐观锁通常是使用CAS(Compare And Swap)实现的,它可以在不加锁的情况下实现原子操作,从而避免并发冲突。
三、实现
1、悲观锁实现:
public synchronized void modifyData(){// 修改数据}
2、乐观锁实现:
public void modifyData(){// 获取旧数据int oldValue = getData();// 修改数据int newValue = modify(oldValue);// 比较并交换if(compareAndSwap(oldValue, newValue)){// 交换成功,修改成功}}