当前位置: 首页 > news >正文

网站设计的发展趋势微信怎么开自己的公众号

网站设计的发展趋势,微信怎么开自己的公众号,老闵行的房子值得买吗,蓝海基业做的网站好吗目录 一、什么是AQS? 1.1 AQS的核心地位 二、AQS核心架构 2.1 状态管理 三、AQS工作原理 3.1 同步队列管理 3.2 等待状态说明 四、AQS的两种模式 4.1 独占模式(Exclusive) 4.2 共享模式(Shared) 五、AQS在J…

目录

一、什么是AQS?

1.1 AQS的核心地位

二、AQS核心架构

2.1 状态管理

三、AQS工作原理

3.1 同步队列管理

3.2 等待状态说明

四、AQS的两种模式

4.1 独占模式(Exclusive)

4.2 共享模式(Shared)

五、AQS在JUC中的应用

5.1 ReentrantLock实现

六、条件变量(Condition)

6.1 条件队列实现

七、AQS设计精髓

7.1 模板方法模式

7.2 无锁队列操作

八、总结


一、什么是AQS?

AQS(AbstractQueuedSynchronizer,抽象队列同步器)是Java并发包(JUC)的核心基础框架,它为实现各种同步器(如锁、信号量等)提供了一个通用的底层架构。

1.1 AQS的核心地位

  1. JUC的基石ReentrantLockCountDownLatchSemaphore等都基于AQS构建
  2. 模板方法模式:定义了同步器的骨架,子类实现特定逻辑
  3. CLH队列:基于CLH锁变体的FIFO等待队列实现

二、AQS核心架构

2.1 状态管理

AQS使用一个volatile int state来表示同步状态:

  1. ReentrantLock:state表示重入次数
  2. Semaphore:state表示可用许可数

三、AQS工作原理

3.1 同步队列管理

AQS使用CLH变体的FIFO双向队列管理等待线程:

static final class Node {volatile int waitStatus;      // 等待状态volatile Node prev;           // 前驱节点volatile Node next;           // 后继节点  volatile Thread thread;       // 关联线程Node nextWaiter;              // 条件队列专用
}

3.2 等待状态说明

状态值

常量名

描述

0

初始状态

节点初始化时的状态

1

CANCELLED

节点因超时或中断被取消

-1

SIGNAL

后继节点需要被唤醒

-2

CONDITION

节点在条件队列中等待

-3

PROPAGATE

共享模式下传播释放

四、AQS的两种模式

4.1 独占模式(Exclusive)

// 获取资源
public final void acquire(int arg) {if (!tryAcquire(arg) &&acquireQueued(addWaiter(Node.EXCLUSIVE), arg))selfInterrupt();
}// 释放资源  
public final boolean release(int arg) {if (tryRelease(arg)) {Node h = head;if (h != null && h.waitStatus != 0)unparkSuccessor(h);return true;}return false;
}

4.2 共享模式(Shared)

// 获取共享资源
public final void acquireShared(int arg) {if (tryAcquireShared(arg) < 0)doAcquireShared(arg);
}// 释放共享资源
public final boolean releaseShared(int arg) {if (tryReleaseShared(arg)) {doReleaseShared();return true;}return false;
}

五、AQS在JUC中的应用

5.1 ReentrantLock实现

// 非公平锁获取实现
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;setState(nextc);return true;}return false;
}

六、条件变量(Condition)

6.1 条件队列实现

public class ConditionObject implements Condition {private transient Node firstWaiter;   // 条件队列头private transient Node lastWaiter;    // 条件队列尾public final void await() throws InterruptedException {if (Thread.interrupted())throw new InterruptedException();Node node = addConditionWaiter();  // 加入条件队列int savedState = fullyRelease(node); // 完全释放锁// ... 等待被signal唤醒}
}

七、AQS设计精髓

7.1 模板方法模式

public abstract class AbstractQueuedSynchronizer {// 子类需要实现的方法protected boolean tryAcquire(int arg) { throw new UnsupportedOperationException(); }protected boolean tryRelease(int arg) { throw new UnsupportedOperationException(); }// 模板方法public final void acquire(int arg) {if (!tryAcquire(arg) &&acquireQueued(addWaiter(Node.EXCLUSIVE), arg))selfInterrupt();}
}

7.2 无锁队列操作

AQS使用CAS操作维护队列:

// 节点入队
private Node addWaiter(Node mode) {Node node = new Node(Thread.currentThread(), mode);Node pred = tail;if (pred != null) {node.prev = pred;if (compareAndSetTail(pred, node)) {pred.next = node;return node;}}enq(node); // CAS失败时进入完整入队return node;
}

八、总结

AQS作为Java并发编程的基石,其设计体现了多个精妙之处:

  • 模板方法模式:分离通用逻辑与特定实现
  • CLH队列变体:高效管理等待线程
  • 状态机设计:灵活支持多种同步器
  • 无锁算法:CAS操作保证线程安全
http://www.dtcms.com/a/509818.html

相关文章:

  • 网站建设iis配置河北招投标信息服务平台
  • 智慧团建网站几点关闭h5网站开发公司
  • 中小学网站建设规范大型的网站建设公司
  • 如何做自己的个人网站网站建设的职责
  • c 怎么做网站开发做网站需要交印花税
  • 免费网站域名注册个人襄州区城乡建设局网站
  • 网站建设服务合同 印花税网站空间不够用
  • 全flash网站下载跨境电商平台有哪些app
  • 环保设备东莞网站建设wordpress开发手册下载
  • 建设网站 无法显示图片搜索引擎优化的定义是什么
  • 快递网站域名更换宁波海曙网站开发公司电话
  • 自然堂官方网站建设网站怎么建设好看
  • 哈尔滨网站搭建页面设计制作网站
  • 无法访问网站怎么看别人网站是怎么做的
  • 短视频剪辑自学seo外链推广工具
  • 如何做游戏推广网站cms是网站吗
  • 企业网站的规划与建设wordpress本地批量传文章
  • 网站资料如何做脚注佳匠网站建设
  • 彩票自己开盘做网站wordpress 情侣博客
  • h5商城网站建站南宁百度seo放心选择
  • 青岛网站建设q479185700棒常见的网络营销模式
  • 优质的网站设计模板主题为气流
  • 温州正规制作网站公司大连网站开发公司shepiguo
  • 公司网站代做做网站是要云空间吗
  • 个人做搜索引擎网站违法吗司法局门户网站建设该报告
  • 网站建设骗子广州开发区人才工作集团有限公司
  • 设计策划网站深圳专业seo
  • 手机网站的域名送菜上门网站app如何做
  • 深圳网站建设公司的英文名是广告策划书封面
  • 下载 iis 网站创建网站的app