开发者社区 问答 正文

Thread的holdsLock()这个方法该怎么用?

今天看到这样一句话:

在java.lang.Thread中有一个方法叫holdsLock(),它返回true如果当且仅当当前线程拥有某个具体对象的锁。

感觉很惊喜,因为写了不少线程但从来不知道有这个方法,于是想写个Demo测试一番,但是发现怎么都写不出来,有前辈可以给个例子说明下这个方法该怎么用吗?

展开
收起
蛮大人123 2016-03-06 11:02:49 3029 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    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`

    2019-07-17 18:54:17
    赞同 展开评论
问答地址: