什么是java非公平锁
发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,这篇文章主要介绍"什么是java非公平锁",在日常操作中,相信很多人在什么是java非公平锁问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"什么是java非公平锁"的疑惑
千家信息网最后更新 2025年02月21日什么是java非公平锁
这篇文章主要介绍"什么是java非公平锁",在日常操作中,相信很多人在什么是java非公平锁问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"什么是java非公平锁"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1、非公平锁不能保证锁的获取是按照请求锁的顺序进行的。这可能会导致某个或某些线程永远得不到锁。
2、CPU唤醒线程的费用可以降低,整体吞吐效率会很高。但是可能会有线程长时间甚至永远得不到锁,导致饿死。
实例
/** * Sync object for non-fair locks */ static final class NonfairSync extends Sync { private static final long serialVersionUID = 7316153563782823691L; /** * Performs lock. Try immediate barge, backing up to normal * acquire on failure. */ final void lock() { if (compareAndSetState(0, 1)) setExclusiveOwnerThread(Thread.currentThread()); else acquire(1); } protected final boolean tryAcquire(int acquires) { return nonfairTryAcquire(acquires); } } /** * Sync object for fair locks */ static final class FairSync extends Sync { private static final long serialVersionUID = -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非公平锁"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
学习
线程
更多
帮助
实用
接下来
实例
效率
整体
文章
方法
理论
知识
篇文章
网站
费用
资料
跟着
问题
顺序
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
app开发和软件开发
提升网络技术的书
网络安全和数字化的区别
狂野飙车9选哪个服务器
苏康码服务器出错了是怎么回事
软件开发行业英语
网络安全驻点必要性
网络安全问题灵魂摆渡
中国互联网科技全球领先
扬州代驾软件开发
再谈网络安全性
自己架设驱动服务器
数据库索引 面试
中国职业教育资料数据库
数据库sql设置一列为0
数据库中选择什么区别吗
如何清理数据库doc
his数据库文件夹
手机驱蚊软件开发
网络技术的udp是什么
网络安全技术支撑费用明细
苏州营销网络技术哪家好
大学生软件开发电脑推荐
人工智能网络安全局限
应用的数据库是指什么内容
中软网络安全与隐私保护
邮件服务器被中继了怎么办
同济数据库技术与应用实验一
数据库研发
无法为数据库分配空间