企业如何建设网站呢发布摄影作品的平台

张小明 2025/12/29 0:00:59
企业如何建设网站呢,发布摄影作品的平台,如何注册腾讯企业邮箱,气象网站建设管理总结UC#xff08;java.util.concurrent#xff09;并发包#xff0c;作为Java语言并发编程的利器#xff0c;由并发编程领域的泰斗道格利#xff08;Doug Lea#xff09;精心打造。它提供了一系列高效、线程安全的工具类、接口及原子类#xff0c;极大地简化了并发编程的开…UCjava.util.concurrent并发包作为Java语言并发编程的利器由并发编程领域的泰斗道格·利Doug Lea精心打造。它提供了一系列高效、线程安全的工具类、接口及原子类极大地简化了并发编程的开发流程与管理复杂度。JUC并发包与happens-before、内存语义的关系image探索JUC并发包会发现它与Java内存模型中的happens-before原则及内存语义紧密相连。从高层视角俯瞰volatile关键字与CASCompare-And-Swap操作构成了JUC并发包底层实现的核心基石。接下来以并发工具Lock为例剖析其背后的实现机制。class LockExample {int x 0;Lock lock new ReentrantLock();public void set() {// 获取锁lock.lock();try {x 1;} finally {// 释放锁lock.unlock();}}public void get() {// 获取锁lock.lock();try {int i x;// ......} finally {// 释放锁lock.unlock();}}}Lock的实现依赖于Java同步器框架AbstractQueuedSynchronizerAQS。AQS内部维护了一个由volatile修饰的整型变量state用于表示同步状态。‌ 1获取锁‌当调用Lock的lock()方法时会触发AQS的tryAcquire()方法尝试获取锁。该方法首先检查当前state是否为0表示锁未被占用若是则通过CAS操作将state设置为1并标记当前线程为锁的持有者。若锁已被当前线程持有即重入锁情况则直接增加state的值。‌ 2释放锁‌当调用Lock的unlock()方法时会触发AQS的tryRelease()方法释放锁。该方法首先减少state的值若减少后state为0则表示锁已完全释放同时清除锁的持有者信息。// 关键volatile变量private volatile int state;protected final boolean tryAcquire(int acquires) {// 1 获取到当前线程final Thread current Thread.currentThread();// 2 获取到当前锁的state值int c getState();// 3 如果state值为0则是无线程占用锁if (c 0) {// 4 compareAndSetState则通过CAS对state进行设置为1if (compareAndSetState(0, acquires)) {// 5 设置占用线程为当前线程并返回truesetExclusiveOwnerThread(current);return true;}}// 6 如果state不为0并且当前线程等于锁占用的线程则说明锁重入了。else if (current getExclusiveOwnerThread()) {// 7 直接将state设置为1int nextc c acquires;if (nextc 0)throw new Error(Maximum lock count exceeded);setState(nextc);return true;}// 8 如果是false则说明是其他线程直接返回false。return false;}protected final boolean tryRelease(int releases) {// 1 对state进行减值int c getState() - releases;// 2 判断当前线程等于锁占用的线程if (Thread.currentThread() ! getExclusiveOwnerThread())throw new IllegalMonitorStateException();boolean free false;// 3 当c值为0代表释放锁成功if (c 0) {free true;// 4 设置为当前锁没有线程独占setExclusiveOwnerThread(null);}// 5 将state重新置为0意味其他线程可以重新抢锁setState(c);// 6 释放锁成功return free;}从上述代码中可以观察到volatile变量state在锁获取与释放过程中的关键作用。根据volatile的happens-before规则释放锁的线程在修改volatile变量之前对共享变量的修改对于后续获取该锁的线程来说是可见的。这确保了锁机制的正确性与线程间的数据一致性。为了更直观地理解Lock的获取与释放过程我们可以将其简化为如下伪代码。class SimplifiedLockExample {int x 0;volatile int state;public void set() {// 当前线程从主内存读取state值while(state ! 0) {// 伪代码 阻塞当前线程park(Thread.currentThread())}// CAS操作确保只有一个线程能成功设置state为1compareAndSwap(state, 1)// 赋值操作受volatile内存语义保护防止重排序x 1;// 释放锁将state重置为0state 0;// 唤醒其他等待线程unpark(nonCurrentThread());}public void get() {// 当前线程从主内存读取state值while(state ! 0) {// 阻塞当前线程等待锁释放park(Thread.currentThread())}// CAS操作尝试获取锁compareAndSwap(state, 1)// 读取共享变量x的最新值int i x;// 其他操作...// 释放锁将state重置为0state 0;// 唤醒其他等待线程unpark(nonCurrentThread());}// 伪代码方法实际实现需依赖底层系统调用private void park(Thread thread)private void unpark(Thread thread)private boolean compareAndSwap(int expect, int newValue, int updateValue)private Thread nonCurrentThread()}Java的CAS会使用现代处理器上提供的原子指令实现无锁的线程安全更新机制。同时volatile变量的读/写可以实现线程线程之间的通信。如果仔细分析JUC并发包的源代码实现会发现一个通用化的实现模式。‌ 1声明共享变量为volatile‌确保变量的可见性与有序性。‌ 2使用CAS的原子条件更新‌实现线程间的同步与数据的一致性更新。‌ 3配合volatile的读/写内存语义‌实现线程间的通信与数据传递。这一模式在AQS、非阻塞数据结构如ConcurrentHashMap及原子变量类如AtomicInteger等JUC并发包的基础类中得到了广泛应用。而这些基础类又进一步支撑了JUC并发包中高层类的实现构建了一个层次分明、功能强大的并发编程框架。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

商丘做网站优化的公司有哪些除了WordPress等

Excalidraw 中的实时协作:当光标成为对话的一部分 在一场跨时区的系统设计评审会上,团队成员分布在三个国家。没有冗长的 PPT 汇报,也没有模糊不清的“大概在这里”的口头描述——取而代之的是,每个人都能看到主讲人光标精准地划…

张小明 2025/12/26 0:43:02 网站建设

网站全站模板全国免费自学网站

文章详解了大型语言模型(LLM)如何从传统指令式编程转变为学习型智能,从ELIZA到GPT-4的进化历程及核心工作原理(分词→嵌入→Transformer)。分析了训练LLM的数据、算力和成本挑战,以及微调技术如何让普通人也能"定制"AI。…

张小明 2025/12/25 20:54:45 网站建设

地方旅游网站怎么做企业开通网站的费用怎么做分录

四种有符号数编码方式 1. 原码 (Sign-Magnitude) 核心思想:最高位表示符号(0正1负),其余位表示绝对值。 正数:符号位0,数值位为真值的二进制绝对值负数:符号位1,数值位为真值的二进制…

张小明 2025/12/26 13:12:33 网站建设

做下载网站有哪些网站建设多少时间

JLaTeXMath终极指南:在Java项目中完美渲染LaTeX数学公式 【免费下载链接】jlatexmath A Java API to render LaTeX 项目地址: https://gitcode.com/gh_mirrors/jl/jlatexmath 在当今数字化教育和技术文档领域,数学公式的精确展示已成为不可或缺的…

张小明 2025/12/26 16:31:33 网站建设

网站如何注册微信公众平台 类型太原哪个网站制作最好用

EmotiVoice在智能客服系统中的集成与优化方案 在金融、电信和电商等行业,客户对服务体验的期待早已超越“能听懂、会回答”的基本功能。当用户拨通客服热线时,他们希望感受到的是理解与共情,而不是冰冷的机械音重复标准话术。然而&#xff0c…

张小明 2025/12/26 16:31:33 网站建设

网站怎么弄代驾网站开发

腾讯混元开源HunyuanVideo-Foley:端到端音效生成新突破 2025年8月,腾讯混元团队悄然在AI社区投下一颗“听觉炸弹”——HunyuanVideo-Foley正式开源。这不仅是一款音效生成模型,更像是一位能“听见画面”的AI作曲家,看到一段视频&…

张小明 2025/12/26 16:31:32 网站建设