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

2022/7/9 14:25:08

本文主要是介绍那么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

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

 



这篇关于那么h!=null进入,但是头节点的waitStatus还是0,所以不走unpark,A线程结束 A线程结束了谁来唤醒B线程呢? 回到acquireQueued方法 java的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程