千家信息网

什么是java公平锁

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"什么是java公平锁",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"什么是java公平锁"吧!1、公平锁是指线程获取锁的顺序按照加锁
千家信息网最后更新 2026年11月03日什么是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安全错误 数据库的锁怎样保障安全 广州淘业互联网络科技 上海卓越科技互联网 云信互联网科技有限公司 科技金融是不是互联网金融 小马过河互联网科技 致聘互联网科技 上海喔噻互联网科技 奇士达互联网科技 亿账通互联网科技 镁科技互联网资讯平台 无锡溥仪互联网科技有限公司 小米互联网科技园设置 承德科技产业互联网发展 互联网科技产业特征 深圳市优智互联网科技有限公司 电子科技大学互联网创业大赛 中国科技创新与世界互联网大会 黑科技 体验场景 互联网大会 中天科技中国工业互联网 颐高云石互联网科技 科技与互联网 善班互联网科技有限公司 腾讯科技 互联网女皇 华中科技有哪些互联网大佬 湖南洣水互联网科技有限公司扣款 汽车互联网创新科技园 新兴科技互联网创新大赛颁奖典礼 翼展科技 首家互联网医院 伍佰万互联网科技怎么赚钱 江苏苏星互联网科技有限公司
0