珠海做网站三年多少钱邵阳找工作网站

张小明 2026/1/15 18:48:42
珠海做网站三年多少钱,邵阳找工作网站,万户网络待遇怎么样,wordpress修改社交标签同步器#xff08;AQS#xff09;的设计是基于模板方法模式的#xff0c;使用者(指的是自定义同步器)需要继承同步器#xff08;AQS#xff09;并重写AQS指定的方法#xff0c;随后将同步器(自定义的同步器)组合在自定义同步组件的实现中#xff0c;并调用同步器#x…同步器AQS的设计是基于模板方法模式的使用者(指的是自定义同步器)需要继承同步器AQS并重写AQS指定的方法随后将同步器(自定义的同步器)组合在自定义同步组件的实现中并调用同步器AQS提供的模板方法而这些模板方法将会调用使用者(自定义同步器)重写的方法。自定义同步器重写同步器AQS指定的方法时需要同步状态的配合会用到同步器AQS提供的如下3个方法来访问或修改同步状态。·getState()获取当前同步状态。·setState(int newState)设置当前同步状态。·compareAndSetState(int expect,int update)使用CAS设置当前状态该方法能够保证状态设置的原子性。根据上面这段文字对如何构造一个自定义的同步组件总结如下1》定义一个继承AQS同步器的静态的私有的内部类2》该内部类要重写AQS中指定的方法tryAcquire()和tryRelease()方法3》该自定义同步组件调用AQS中提供的模板方法而这些模板方法将会调用使用者(自定义同步器)重写的方法。下面是一个例子独占锁Mutex是一个自定义同步组件它在同一时刻只允许一个线程占有锁。Mutex中定义了一个静态内部类该内部类继承了同步器AQS并实现了独占式获取和释放同步状态。在tryAcquire(int acquires)方法中如果经过CAS设置成功同步状态设置为1则代表获取了同步状态而在tryRelease(int releases)方法中只是将同步状态重置为0。用户使用Mutex时并不会直接和内部同步器的实现打交道而是调用Mutex提供的方法在Mutex的实现中以获取锁的lock()方法为例只需要在方法实现中调用同步器的模板方法acquire(int args)即可当前线程调用该方法获取同步状态失败后会被加入到同步队列中等待这样就大大降低了实现一个可靠自定义同步组件的门槛。import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.AbstractQueuedSynchronizer; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; /** * 自定义一个同步组件例如这里的Mutex首先定义一个静态内部私有类且该类要继承AbstractQueuedSynchronizer这个抽象类 * 重写同步器指定的方法此时需要同步状态的配合会用到同步器提供的如下3个方法来访问或修改同步状态。 getState()获取当前同步状态。 * setState(int newState)设置当前同步状态。 compareAndSetState(int expect,int * update)使用CAS设置当前状态该方法能够保证状态设置的原子性。 */ public class Mutex implements Lock { // 静态内部类自定义一个同步器。注意Mutex是同步器组件 private static class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID -4387327721959839431L; // 是否处于占用状态getState()来自父类 protected boolean isHeldExclusively() { return getState() 1; } /* 当状态为0acquires0的时候获取锁 重写父类中的方法 * see java.util.concurrent.locks.AbstractQueuedSynchronizer#tryAcquire(int) * 独占式获取同步状态实现该方法需要查询当前状态并判断同步状态是否符合预期然 后在进行CAS设置同步状态 */ public boolean tryAcquire(int acquires) { assert acquires 1; // Otherwise unused // 获取锁成功后将状态置为1这样其他线程就不能获取了 if (compareAndSetState(0, 1)) { // 设置当前线程为该锁的拥有者 setExclusiveOwnerThread(Thread.currentThread()); return true; } return false; } // 释放锁将状态设置为0 protected boolean tryRelease(int releases) { assert releases 1; // Otherwise unused if (getState() 0) throw new IllegalMonitorStateException(); // 将该锁设置为不为任何线程所拥有 setExclusiveOwnerThread(null); // 设置状态为0 setState(0); return true; } // 返回一个Condition每个condition都包含了一个condition队列 Condition newCondition() { return new ConditionObject(); } } // 仅需要将操作代理到Sync(使用Sync完成同步加锁功能)上即可 private final Sync sync new Sync(); // 获取锁,调用父类中的方法acquire()方法 public void lock() { sync.acquire(1); } // 尝试获取锁 public boolean tryLock() { return sync.tryAcquire(1); } // 释放锁 public void unlock() { sync.release(1); } public Condition newCondition() { return sync.newCondition(); } // 判断锁是否处于占用状态 public boolean isLocked() { return sync.isHeldExclusively(); } public boolean hasQueuedThreads() { return sync.hasQueuedThreads(); } public void lockInterruptibly() throws InterruptedException { sync.acquireInterruptibly(1); } public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException{ return sync.tryAcquireNanos(1, unit.toNanos(timeout)); } }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

快递建站收费标准长春免费做网站

第一章 系统开发背景与意义 传统机械电能表存在计量精度低、抄表繁琐、无法实时监测用电状态等问题,难以满足现代电力系统的智能化管理需求。随着单片机技术与电力电子技术的发展,基于单片机的智能电能表成为解决上述痛点的理想方案。该表具不仅能实现高…

张小明 2026/1/10 17:50:42 网站建设

html5网站开发视频教程东道设计公司怎么样

本文详细介绍了多模态推荐系统的技术演进与实战应用。从传统推荐算法到多模态表征技术,再到淘宝闪购场景下的三阶段训练策略,展示了多模态特征如何提升推荐效果。同时探讨了生成式推荐的前沿探索,分析了量化编码LLM的技术路线,为推…

张小明 2026/1/15 14:50:46 网站建设

深圳建设执业注册中心网站推广运营工作内容

写在前面车门焊死,考研将至,准备冲刺!我将持续为大家更新25最新真题解析!学得快的同学可以和我一起,全力冲刺~注意,目前我只发布最新年份的真题,其他年份的真题,一个是很…

张小明 2026/1/10 11:19:59 网站建设

南宁网站seo推广优化公司wordpress 网站统计

第一章:GraphQL的PHP错误处理概述在构建基于PHP的GraphQL API时,错误处理是保障系统稳定性和开发者体验的关键环节。与传统的REST API不同,GraphQL在单个请求中可能执行多个字段的解析操作,因此错误的传播与反馈机制更为复杂。Gra…

张小明 2026/1/12 8:42:00 网站建设

济南网站开发xywlcn奉化建设局网站

CosyVoice3语音合成速度测评:平均生成10秒语音耗时多久? 在短视频、直播带货和AI虚拟人爆发的今天,一个能“说人话”的语音合成系统,早已不只是技术玩具。用户不再满足于机械朗读,而是期待有情感、带口音、能即兴换声…

张小明 2026/1/14 22:21:13 网站建设

织梦做的网站怎么添加关键词搭建网站平台

一、题目描述二、算法原理思路:引入哨兵位 3 个指针为什么要引入哨兵位?当我们实现完第一次交换时:prev 的 next 要指向 cur ,所以引入哨兵位,这样一次循环就能搞定交换两两结点;这里我为什么要引入 nnex…

张小明 2026/1/12 14:56:35 网站建设