【423、介绍乐观锁、悲观锁、重入锁、排他锁】

365 阅读1分钟
  1. 乐观锁

乐观锁是一种基于数据版本的锁机制,假设在并发情况下,不会有大量的写冲突,因此多个事务可以同时读取同一数据,但在写入时必须先判断该数据是否被其他事务修改过,如果没有修改过,则可以进行写入操作。如果已经被修改,则需要重新读取数据并重新尝试写入。乐观锁的优点是不会造成阻塞,但是需要在代码中手动实现数据版本控制。

  1. 悲观锁

悲观锁是一种悲观地认为在并发情况下,会有大量的写冲突,因此在对数据进行访问时,先加锁再进行操作。悲观锁的常见实现方式是数据库的行级锁或表级锁。悲观锁的优点是可以避免并发冲突,但是会造成阻塞。

  1. 重入锁

重入锁是一种可重入的锁,允许同一线程在持有锁的情况下再次获取该锁,从而避免死锁。重入锁的常见实现方式是通过一个计数器来记录当前线程持有该锁的次数。

  1. 排他锁

排他锁是一种独占锁,可以防止其他事务读取或修改数据。常见的实现方式是数据库的行级锁或表级锁。排他锁的优点是可以避免并发冲突,但是会造成阻塞。