什么是java非公平锁

技术什么是java非公平锁这篇文章主要介绍“什么是java非公平锁”,在日常操作中,相信很多人在什么是java非公平锁问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是java非公平锁”

本文主要介绍“什么是java不公平锁”。在日常操作中,相信很多人都对什么是java不公平锁有所怀疑。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解答“什么是java不公平锁”的疑惑!接下来,请和边肖一起学习!

1.不公平的锁不能保证锁是按照请求锁的顺序获得的。这可能会导致一个或一些线程永远得不到锁。

2.CPU唤醒线程的成本可以降低,整体吞吐效率会很高。但是,可能会有线程长时间甚至永远得不到锁,从而导致饥饿。

实例

/**

* Syncobjectfornon-fair lock

*/

staticfinalclasofairsyncextendssync {

privatedstationfinalloseriveversiuid=7316153563782823691 l;

/**

*执行扫描。尝试立即插入,恢复正常

*acquireonfailure。

*/

final void lock(){ 0

if(compareAndSetState(0,1))

setExclusiveOwnerThread(thread . currentthread());

其他

获得(1);

}

protected innalbooleantryacquire(intacquires){ 0

returnnonfairTryAcquire(获取);

}

}

/**

* Syncobjectforfairlocks

*/

staticfinaclassfairsynextendssync {

privatedstationfinalloseriveversiuid=nbsp

;-3000897897090466540L;
 
        final void lock() {
            acquire(1);
        }
 
        /**
         * Fair version of tryAcquire.  Don't grant access unless
         * recursive call or no waiters or is first.
         */
        protected final boolean tryAcquire(int acquires) {
            final Thread current = Thread.currentThread();
            int c = getState();
            if (c == 0) {
                if (!hasQueuedPredecessors() &&
                    compareAndSetState(0, acquires)) {
                    setExclusiveOwnerThread(current);
                    return true;
                }
            }
            else if (current == getExclusiveOwnerThread()) {
                int nextc = c + acquires;
                if (nextc < 0)
                    throw new Error("Maximum lock count exceeded");
                setState(nextc);
                return true;
            }
            return false;
        }
    }

到此,关于“什么是java非公平锁”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/38079.html

(0)

相关推荐

  • JavaScript中数组Array的常用方法有哪些

    技术JavaScript中数组Array的常用方法有哪些这篇文章主要为大家展示了“JavaScript中数组Array的常用方法有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习

    攻略 2021年11月2日
  • 映射ADO.NET如何设置参数

    技术映射ADO.NET如何设置参数这篇文章主要为大家展示了“映射ADO.NET如何设置参数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“映射ADO.NET如何设置参数”这篇文

    攻略 2021年12月1日
  • PostgreSQL中make_rel_from_joinlist函数分析

    技术PostgreSQL中make_rel_from_joinlist函数分析这篇文章主要介绍“PostgreSQL中make_rel_from_joinlist函数分析”,在日常操作中,相信很多人在PostgreSQL

    攻略 2021年11月10日
  • 租用美国服务器适合什么业务

    技术租用美国服务器适合什么业务从技术上讲,轻量级云服务器是特化了某一配置的高性价比云服务器的结合。下面,我们将了解轻量级云服务器有什么优势,使用物理服务器搭建网站,您需要租用整个服务器,这成本会变得非常昂贵。这对于一些比

    礼包 2021年12月21日
  • k8s上的火花与k8s操作器上的火花的对比是怎样的

    技术spark on k8s与spark on k8s operator的对比是怎样的这期内容当中小编将会给大家带来有关spark on k8s与spark on k8s operator的对比是怎样的,文章内容丰富且以

    攻略 2021年12月15日
  • 布局标签,结构化语义标签)

    技术布局标签,结构化语义标签) 布局标签(结构化语义标签)注意,关注的是语义,而不是样式的区别,下面的这些标签所展示出来的样式都是一样的,都是H5新增的一些标签,当我们遇到这些标签的时候就能够通过语义知

    礼包 2021年12月10日