什么是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)

相关推荐

  • 【转载】EXCEL VBA 20个有用的ExcelVBA代码

    技术【转载】EXCEL VBA 20个有用的ExcelVBA代码 【转载】EXCEL VBA 20个有用的ExcelVBA代码1.显示多个隐藏的工作表
    如果你的工作簿里面有多个隐藏的工作表,你需要花很多

    礼包 2021年11月13日
  • max是什么意思车上的,雷克萨斯max什么意思

    技术max是什么意思车上的,雷克萨斯max什么意思max的意思是最大max是什么意思车上的,如果是车内的max按键,那一般是空调的强冷按键。在发动机机油尺上,也有max。max是最高液位,添加机油时不要让液位超过max刻

    生活 2021年10月22日
  • 解魔方的方法的步骤,魔方最简单还原步骤是什么

    技术解魔方的方法的步骤,魔方最简单还原步骤是什么在这里向大家介绍一种比较简单的魔方六面还原方法。这种方法熟练之后可以在大约30秒之内将魔方的六面还原。 在介绍还原法之前,首先说明一下魔方移动的记法。魔方状态图中标有字母“

    生活 2021年10月28日
  • spark运行模式(spark的主要功能是什么)

    技术Spark2.4.0有什么功能这篇文章给大家分享的是有关Spark2.4.0有什么功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SparkCore 和 SQL 增加了Barrier E

    攻略 2021年12月16日
  • Java 内存模型

    技术Java 内存模型 Java 内存模型Java 内存模型
    Java 内存模型简称JMM,全名 Java Memory Model 。Java 内存模型规定了 JVM 应该如何使用计算机内存(RAM)

    礼包 2021年11月24日
  • 数据库语句能通过脚本运行吗(数据库脚本版本管理)

    技术数据库日常维护常用的脚本语句是什么小编给大家分享一下数据库日常维护常用的脚本语句是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  1

    攻略 2021年12月20日