如果我的显示器具有以下结构

 if( [condition lock condition])
 {

    do{

    cond.lock()


    }while([condition lock condition]);
 }


ReentrantLock(true)是否可以防止任何可能的饥饿情况?将RetruerantLock()构造函数作为参数放入true会创建一个由JVM管理的FIFO队列。但是,如果我们继续使用while循环调用cond.lock(),那么某个线程是否有可能饿死?

最佳答案

构造函数的布尔参数用于“公平”。在这种情况下,优先考虑最长的等待线程。它不会对您描述的场景产生影响。

同一线程的递归锁没有饥饿问题。但是这样的调用限制为2147483647。

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReentrantLock.html#ReentrantLock(boolean)

关于java - 饥饿预防和ReentrantLock(true);,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20022182/

10-12 20:46