今天看到这样一句话:
在java.lang.Thread中有一个方法叫holdsLock(),它返回true如果当且仅当当前线程拥有某个具体对象的锁。
感觉很惊喜,因为写了不少线程但从来不知道有这个方法,于是想写个Demo测试一番,但是发现怎么都写不出来,有前辈可以给个例子说明下这个方法该怎么用吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Object o = new Object();
@Test
public void test1() throws Exception {
new Thread(new Runnable() {
@Override
public void run() {
synchronized(o) {
System.out.println("child thread: holdLock: " +
Thread.holdsLock(o));
}
}
}).start();
System.out.println("main thread: holdLock: " + Thread.holdsLock(o));
Thread.sleep(2000);
}
`
main thread: holdLock: false
child thread: holdLock: true`