public static native boolean holdsLock(Object object) 方法的作用是当currentThread在指定的对象上保持锁定时,才返回true。 样例代码:
public class HoldsLockTest { public static void main(String[] args) { Thread.currentThread(); System.out.println("A " + Thread.holdsLock(HoldsLockTest.class)); synchronized (HoldsLockTest.class) { System.out.println("B " + Thread.holdsLock(HoldsLockTest.class)); } System.out.println("C "+ Thread.holdsLock(HoldsLockTest.class)); HoldsLockTest test1 = new HoldsLockTest(); HoldsLockTest test2 = new HoldsLockTest(); System.out.println("D test1:" + Thread.holdsLock(test1) + " test2:" + Thread.holdsLock(test2)); synchronized (test1) { System.out.println("E test1:" + Thread.holdsLock(test1) + " test2:" + Thread.holdsLock(test2)); } System.out.println("F test1:" + Thread.holdsLock(test1) + " test2:" + Thread.holdsLock(test2)); } }运行结果:
A false B true C false D test1:false test2:false E test1:true test2:false F test1:false test2:false