编程语言
首页 > 编程语言> > 那么h!=null进入,但是头节点的waitStatus还是0,所以不走unpark,A线程结束 A线程结束了谁来唤醒B线程呢? 回到acquireQueued方法 java

那么h!=null进入,但是头节点的waitStatus还是0,所以不走unpark,A线程结束 A线程结束了谁来唤醒B线程呢? 回到acquireQueued方法 java

作者:互联网

final boolean acquireQueued(final Node node, int arg) {
    boolean failed = true;
    try {
        boolean interrupted = false;
        for (;;) {
            final Node p = node.predecessor();
            if (p == head && tryAcquire(arg)) {
                setHead(node);
                p.next = null; // help GC
                failed = false;
                return interrupted;
            }
            if (shouldParkAfterFailedAcquire(p, node) &&
                parkAndCheckInterrupt())
                interrupted = true;
        }
    } finally {
        if (failed)
            cancelAcquire(node);
    }
}

  原材料https://www.cnblogs.com/sunankang/p/16458795.html

欢迎技术交流,感兴趣的可以加群

 

标签:node,waitStatus,interrupted,failed,acquireQueued,boolean,线程,final
来源: https://www.cnblogs.com/huangjiangyong/p/16459244.html