阅读量:4
下面是一个使用Java LockInfo类的示例:
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class LockInfoExample { public static void main(String[] args) { Lock lock = new ReentrantLock(); // 获取锁的信息 LockInfo lockInfo = lock.getLockInfo(); System.out.println("Lock owner: " + lockInfo.getOwnerName()); System.out.println("Lock is held by current thread: " + lockInfo.isLocked()); System.out.println("Lock is fair: " + lockInfo.isFair()); // 锁定 lock.lock(); // 获取锁的信息 lockInfo = lock.getLockInfo(); System.out.println("Lock owner: " + lockInfo.getOwnerName()); System.out.println("Lock is held by current thread: " + lockInfo.isLocked()); System.out.println("Lock is fair: " + lockInfo.isFair()); // 解锁 lock.unlock(); // 获取锁的信息 lockInfo = lock.getLockInfo(); System.out.println("Lock owner: " + lockInfo.getOwnerName()); System.out.println("Lock is held by current thread: " + lockInfo.isLocked()); System.out.println("Lock is fair: " + lockInfo.isFair()); } }
输出结果:
Lock owner: null Lock is held by current thread: false Lock is fair: false Lock owner: main Lock is held by current thread: true Lock is fair: false Lock owner: null Lock is held by current thread: false Lock is fair: false
这个示例创建了一个ReentrantLock对象,并使用LockInfo类获取了锁的信息。在获取锁之前,锁的拥有者是null,锁没有被任何线程持有。在获取锁之后,锁的拥有者是主线程,锁被当前线程持有。在释放锁之后,锁的拥有者再次变为null,锁没有被任何线程持有。