Module bus.core

Class Lock

java.lang.Object
org.miaixz.bus.core.lang.thread.lock.Lock

public class Lock extends Object
锁相关类
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • Lock

      public Lock()
  • Method Details

    • createStampLock

      public static StampedLock createStampLock()
      创建StampedLock
      Returns:
      StampedLock
    • createReadWriteLock

      public static ReentrantReadWriteLock createReadWriteLock(boolean fair)
      Parameters:
      fair - 是否公平锁
      Returns:
      ReentrantReadWriteLock
    • createSegmentLock

      public static SegmentLock<Lock> createSegmentLock(int segments)
      创建分段锁(强引用),使用 ReentrantLock
      Parameters:
      segments - 分段数量,必须大于 0
      Returns:
      分段锁实例
    • createSegmentReadWriteLock

      public static SegmentLock<ReadWriteLock> createSegmentReadWriteLock(int segments)
      创建分段读写锁(强引用),使用 ReentrantReadWriteLock
      Parameters:
      segments - 分段数量,必须大于 0
      Returns:
      分段读写锁实例
    • createSegmentSemaphore

      public static SegmentLock<Semaphore> createSegmentSemaphore(int segments, int permits)
      创建分段信号量(强引用)
      Parameters:
      segments - 分段数量,必须大于 0
      permits - 每个信号量的许可数
      Returns:
      分段信号量实例
    • createLazySegmentLock

      public static SegmentLock<Lock> createLazySegmentLock(int segments)
      创建弱引用分段锁,使用 ReentrantLock,懒加载
      Parameters:
      segments - 分段数量,必须大于 0
      Returns:
      弱引用分段锁实例
    • getSegmentLock

      public static Lock getSegmentLock(int segments, Object key)
      根据 key 获取分段锁(强引用)
      Parameters:
      segments - 分段数量,必须大于 0
      key - 用于映射分段的 key
      Returns:
      对应的 Lock 实例
    • getSegmentReadLock

      public static Lock getSegmentReadLock(int segments, Object key)
      根据 key 获取分段读锁(强引用)
      Parameters:
      segments - 分段数量,必须大于 0
      key - 用于映射分段的 key
      Returns:
      对应的读锁实例
    • getSegmentWriteLock

      public static Lock getSegmentWriteLock(int segments, Object key)
      根据 key 获取分段写锁(强引用)
      Parameters:
      segments - 分段数量,必须大于 0
      key - 用于映射分段的 key
      Returns:
      对应的写锁实例
    • getSegmentSemaphore

      public static Semaphore getSegmentSemaphore(int segments, int permits, Object key)
      根据 key 获取分段信号量(强引用)
      Parameters:
      segments - 分段数量,必须大于 0
      permits - 每个信号量的许可数
      key - 用于映射分段的 key
      Returns:
      对应的 Semaphore 实例
    • getLazySegmentLock

      public static Lock getLazySegmentLock(int segments, Object key)
      根据 key 获取弱引用分段锁,懒加载
      Parameters:
      segments - 分段数量,必须大于 0
      key - 用于映射分段的 key
      Returns:
      对应的 Lock 实例
    • getNoLock

      public static NoLock getNoLock()
      获取单例的无锁对象
      Returns:
      NoLock