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

相关推荐

  • 怎么使用trim_galore对NGS数据进行质量过滤

    技术怎么使用trim_galore对NGS数据进行质量过滤怎么使用trim_galore对NGS数据进行质量过滤,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题

    攻略 2021年11月10日
  • sqlserver索引的原理及索引建立的注意事项有哪些

    技术sqlserver索引的原理及索引建立的注意事项有哪些本篇文章为大家展示了sqlserver索引的原理及索引建立的注意事项有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

    攻略 2021年12月1日
  • 哈利波特一共几部,《哈利波特》电影版共出过几部

    技术哈利波特一共几部,《哈利波特》电影版共出过几部一共七部,顺序如下:1哈利波特一共几部、哈利·波特与魔法石(Harry Potter and the Sorcerers Stone)——2001年2、哈利·波特与密室(

    生活 2021年10月19日
  • vue中怎么使用vue-cropper裁剪图片

    技术vue中怎么使用vue-cropper裁剪图片这篇文章主要讲解了“vue中怎么使用vue-cropper裁剪图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中

    攻略 2021年11月24日
  • Java 7异常新特性mutilcatch是怎么样的

    技术Java 7异常新特性mutilcatch是怎么样的这篇文章将为大家详细讲解有关Java 7异常新特性mutilcatch是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有

    攻略 2021年10月23日
  • 如何进行Mysql索引优化

    技术如何进行Mysql索引优化本篇文章为大家展示了如何进行Mysql索引优化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。点击上方“程序员小明”,选择“星标”今晚可以不加班! M

    攻略 2021年11月4日