什么是java公平锁
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章主要讲解了"什么是java公平锁",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"什么是java公平锁"吧!1、公平锁是指线程获取锁的顺序按照加锁
千家信息网最后更新 2025年02月05日什么是java公平锁
这篇文章主要讲解了"什么是java公平锁",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"什么是java公平锁"吧!
1、公平锁是指线程获取锁的顺序按照加锁的顺序分配,先来先得,先进先出。
2、公平锁可以保证线程按时间顺序执行,避免饥饿。但是公平锁的效率很低,因为要保证顺序执行,就要保持有序的队列。
实例
/** * Base of synchronization control for this lock. Subclassed * into fair and nonfair versions below. Uses AQS state to * represent the number of holds on the lock. */ abstract static class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = -5179523762034025860L; /** * Performs {@link Lock#lock}. The main reason for subclassing * is to allow fast path for nonfair version. */ abstract void lock(); /** * Performs non-fair tryLock. tryAcquire is implemented in * subclasses, but both need nonfair try for trylock method. */ final boolean nonfairTryAcquire(int acquires) { final Thread current = Thread.currentThread(); int c = getState(); if (c == 0) { if (compareAndSetState(0, acquires)) { setExclusiveOwnerThread(current); return true; } } else if (current == getExclusiveOwnerThread()) { int nextc = c + acquires; if (nextc < 0) // overflow throw new Error("Maximum lock count exceeded"); setState(nextc); return true; } return false; } protected final boolean tryRelease(int releases) { int c = getState() - releases; if (Thread.currentThread() != getExclusiveOwnerThread()) throw new IllegalMonitorStateException(); boolean free = false; if (c == 0) { free = true; setExclusiveOwnerThread(null); } setState(c); return free; } protected final boolean isHeldExclusively() { // While we must in general read state before owner, // we don't need to do so to check if current thread is owner return getExclusiveOwnerThread() == Thread.currentThread(); } final ConditionObject newCondition() { return new ConditionObject(); } // Methods relayed from outer class final Thread getOwner() { return getState() == 0 ? null : getExclusiveOwnerThread(); } final int getHoldCount() { return isHeldExclusively() ? getState() : 0; } final boolean isLocked() { return getState() != 0; } /** * Reconstitutes the instance from a stream (that is, deserializes it). */ private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException { s.defaultReadObject(); setState(0); // reset to unlocked state } }
感谢各位的阅读,以上就是"什么是java公平锁"的内容了,经过本文的学习后,相信大家对什么是java公平锁这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
顺序
学习
内容
线程
保证
有序
先进
实例
就是
思路
情况
效率
文章
时间
更多
知识
知识点
篇文章
跟着
问题
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
陕西专业软件开发排行榜
云相框服务器
网络安全专业讲什么的
网络安全的合同
服务器启动提示不能启动cpu
浪潮机架服务器维修时间
服务器之间单向网络通信
软件开发行业企业名称
城市三维模型软件开发
我国数据库发展我们能做什么
软件开发 框架方案
软件开发项目小结
vb6上传文件到数据库
网络技术免费培训
用vb制作一个数据库浏览程序
上海农商银行软件开发工资
it数据库都是什么
电子图书数据库检索土木工程
保山行业专业软件开发
科技互联网动感线条粒子底纹
陕西掌宝互联网科技是干嘛的
销售免费实时数据库
无锡网络安全审计系统咨询服务费
软件开发部门宣传标语
武威软件开发品牌
mc1.10.2服务器
网络安全法的行业组织
梧州网络安全相关培训学历要求低
数据库文件中毒丢失
梅州通讯软件开发维修电话