导航:首页 > 源码编译 > AQS算法的查询树构造

AQS算法的查询树构造

发布时间:2025-01-23 09:53:45

‘壹’ J.U.C|同步队列(CLH)

在上篇我们聊到AQS的原理,具体参见 《J.U.C|带你走进AQS的内心世界》 。

这篇我们来给大家聊聊AQS中核心同步队列(CLH)。

同步队列

一个FIFO双向队列,队列中每个节点等待前驱节点释放共享状态(锁)被唤醒就可以了。

AQS如何使用它?

AQS依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS则会将当前线程已经等待状态等信息构造成一个节点(Node)并将其加入到CLH同步队列,同时会阻塞当前线程,当同步状态释放时,会把首节点唤醒(公平锁),使其再次尝试获取同步状态。

Node节点面貌?

CLH同步队列的结构图

这里是基于CAS(保证线程的安全)来设置尾节点的。

如上图了解了同步队列的结构, 我们在分析其入列操作在简单不过。无非就是将tail(使用CAS保证原子操作)指向新节点,新节点的prev指向队列中最后一节点(旧的tail节点),原队列中最后一节点的next节点指向新节点以此来建立联系,来张图帮助大家理解。

源码
源码我们可以通过AQS中的以下两个方法来了解下
addWaiter方法

先通过addWaiter(Node node)方法尝试快速将该节点设置尾成尾节点,设置失败走enq(final Node node)方法

enq

通过“自旋”也就是死循环的方式来保证该节点能顺利的加入到队列尾部,只有加入成功才会退出循环,否则会一直循序直到成功。

上述两个方法都是通过compareAndSetHead(new Node())方法来设置尾节点,以保证节点的添加的原子性(保证节点的添加的线程安全。)

同步队列(CLH)遵循FIFO,首节点是获取同步状态的节点,首节点的线程释放同步状态后,将会唤醒它的后继节点(next),而后继节点将会在获取同步状态成功时将自己设置为首节点,这个过程非常简单。如下图

设置首节点是通过获取同步状态成功的线程来完成的(获取同步状态是通过CAS来完成),只能有一个线程能够获取到同步状态,因此设置头节点的操作并不需要CAS来保证,只需要将首节点设置为其原首节点的后继节点并断开原首节点的next(等待GC回收)应用即可。

聊完后我们来总一下,同步队列就是一个FIFO双向对队列,其每个节点包含获取同步状态失败的线程应用、等待状态、前驱节点、后继节点、节点的属性类型以及名称描述。

其入列操作也就是利用CAS(保证线程安全)来设置尾节点,出列就很简单了直接将head指向新头节点并断开老头节点联系就可以了。

‘贰’ 统计学毕业论文选题

统计学毕业论文选题

毕业论文的题目是开始写作的关键,先选好题,再下笔。下面是我整理的统计学毕业论文选题,希望大家喜欢。

统计学毕业论文选题

1、具有预测能力的呼叫中心系统的设计与实现

2、PVAR模型在研究经济增长与能源消费关系中的应用

3、基于有限元的深基坑组合型围护结构可靠度分析

4、一些带有偏序结构的完全码

5、Stein方法在复合泊松分布近似中的应用

6、各类分布产生的背景

7、保险金融中的计数过程的若干渐近性

8、高中概率教学的现状、问题及对策研究

9、随机变量序列的极限定理

10、Cayley树上非对称马氏链及任意相依随机变量序列强极限定理的若干研究

11、一类混合随机序列的概率极限定理

12、保证齿轮质量的结构和工艺措施研究

13、道路施工机群资源配置和计划调度沥青混凝土路面机械化施工系统状态分析与技术经济评价研究

14、高速公路服务区合理规模与布局研究

15、基于图像区域统计特征的隐写分析技术研究

16、统计收敛的测度理论

17、关于φ-混合随机变量序列的矩完全收敛性的研究

18、混合相依随机变量序列极限理论的若干结果

19、两两NQD列的一些收敛性质

20、电力市场环境下的电能质量评估研究

21、本科概率论试验课程设计初探

22、基于随机模拟试验的稳健优化设计方法研究

23、随机变量序列部分和乘积的几乎处处中心极限定理

24、AQSI序列的强极限定理

25、几类相依混合随机变量列的大数律和L~r收敛性

26、现代经济计量学建立简史

27、任意随机变量序列的相关定理

28、新建电气化铁路电能质量影响预测研究

29、鞅差与相依随机变量序列部分和精确渐近性

30、ND序列若干收敛性质的研究

31、证券组合投资决策的均匀试验设计优化研究

32、相依随机变量序列部分和收敛速度

33、行为两两NQD随机变量阵列加权和的收敛性

34、数值计算的统计确认研究与初步应用

35、基于证据理论的足球比赛结果预测方法

36、城市工业用地集约利用评价与潜力挖掘

37、节理化岩体边坡稳定性研究

38、随机变分不等式及其应用

39、基于模糊综合评价的靶场实时光测数据质量评估

40、基于路径的加权地域通信网可靠性研究

41、LNQD样本近邻估计的大样本性质

42、20CrMoH齿轮弯曲疲劳强度研究

43、我国股票市场与宏观经济之间的协整分析

44、一类Copula函数及其相关问题研究

45、乐透型彩票N选M中奖号码的概率分析

46、协整理论在汽车发动机系统故障诊断中的应用

47、2010年上海世博会会展中断风险分析和保险建议

48、贝儿康有限公司激励设计研究

49、云模型在系统可靠性中的应用研究

50、离散更新模型破产概率及赤字的上下界估计

51、输电线微风振动与疲劳寿命

52、电器产品模糊可靠性分析中模糊可靠度的研究

53、变分不等式及变分包含解的存在性与算法

54、隧道测量误差控制方案的'研究

55、塔式起重机臂架可靠性分析软件开发

56、分布式认证跳表及其在P2P分布式存储系统中的应用

57、房地产行业企业所得税纳税评估实证研究

58、天然气管道断裂事故分析

59、粗集理论及其在数据预处理过程中的应用

60、集装箱码头后方堆场荷载统计分析和概率模型

61、多工序制造过程计算机辅助误差诊断控制系统

62、实(复)值统计型测度的表示理论及其它在统计收敛上的应用

63、应用统计教育部重点实验室程序库建设

64、基于个体的捕食系统模型

65、相依样本下移动平均过程的矩完全收敛

66、基坑变形监测分析及单撑—排桩墙支护结构抗倾覆可靠度研究

67、基于综合的交通冲突技术的城市道路交叉口安全评价方法研究

68、暗挖地铁车站下穿对既有结构安全性影响分析

69、随机变量阵列的强收敛性

70、基于随机有限元的疲劳断裂可靠性研究

71、高中数学教学概率统计部分浅析

72、敏感问题二阶段抽样调查的统计方法及应用

73、三大重要分布及其性质的进一步研究

74、随机变量的统计收敛性及统计收敛在数据处理方面的应用

75、多变量密度函数小波估计的一致中心极限定理

76、混合Copula构造及相关性应用

77、数学职前教师对正态分布的理解水平的研究

78、煤矿事故系统脆性模型的建立与仿真

79、基于贝叶斯网络的客户信用风险评估及系统设计

80、河北北方学院学生成绩关联分析及预测

81、房地产项目现金流管理研究

82、高压电磁感应信号的采集及处理算法的研究

83、基于神经网络的逆变电源可靠性研究

84、跳频序列的局部随机性与线性复杂度分析

85、金川二矿区中段平面运输系统数据分析与模拟模型研究

86、房地产投资风险定量评价与规避策略研究

87、审计统计抽样技术方法研究与设计运行

88、几种概率统计滤波法在重磁数据处理中的研究及应用

89、模糊随机变量序列的极限定理

90、数据挖掘的若干新方法及其在我国证券市场中应用

91、城市道路交通流特征参数研究

92、辽宁红沿河核电厂可能最大风暴潮的估算

93、潜油电泵轴的可靠性分析与设计

94、起重机金属结构极限状态法设计研究

95、相依随机变量极限理论的若干结果

96、局部次高斯随机序列的强极限定理

97、基于自然风险度量的农业保险定价及其财政补贴研究

98、NA和(ρ|~)混合序列的某些收敛性质

99、可交换随机变量序列的极限理论

100、一类相依重尾随机序列的强极限定理及其应用

;

‘叁’ 新手java开发程序员如何拿到月薪2万

第一个是基础,比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。比如一般面试都会问ConcurrentHashMap,CopyOnWrite,线程池,CAS,AQS,虚拟机优化等知识点,因为这些对互联网的企业是绝对重要的。而且一般人这关都过不了,还发闹骚说这些没什么用,为什么要面试。举一例子,在使用线程池时,因为使用了无界队列,在远程服务异常情况下导致内层飙升,怎么去解决?你要是连线程池都不清楚,你怎么去玩?再举一例,由于对ThreadLocal理解出错,使用它做线程安全的控制,导致没能实现真的线程安全,你怪我哦?所以作为一个拿两万的JAVA程序员这点基础是必须的。
第二你需要有全面的互联网技术相关知识。从底层说起,你起码得深入了解mysql,redis,mongodb,nginx,tomcat,rpc,jms等方面的知识。你要问需要了解到什么程度,我可以给你说个大慨。首先对于MySQL,你要知道常见的参数设置,存储引擎怎么去选择,还需要了解常见的索引引擎,知道怎么去选择。知道怎么去设计表,怎么优化sql,怎么根据执行计划去调优。高级的你需要去做分库分表的设计和优化,一般互联网企业的数据库都是读写分离,还会垂直与水平拆分,所以这个也有经验的成分在里面。然后redis,mongodb都是需要了解原理,需要会调整参数的,而nginx和tomcat几乎都是JAVA互联网方面必配,其实很阿里的技术栈选择有点关系。至于rpc相关的就多的去,必须各种网络协议,序列化技术,SOA等等,你要有一个深入的理解。现在应用比较广的rpc框架,在国内就是bbo了,可以自行搜索。至于jms相关的起码得了解原理吧,一般情况下不是专门开发中间件系统和支撑系统的不需要了解太多细节,国内企业常用的主要是activeMQ和kafka。你能对我说的都研究的比较深入,阿里p6我觉得是没问题的,当然这个还需要看你的架构能力方面的面试表现了。
第三就是编程能力,编程思想,算法能力,架构能力的考量。首先2W程序员对算法的要求我觉得还是比较低,再高级也最多红黑树吧,但是排序和查询的基本算法得会。编程思想是必须的,问你个AOP和IOC你起码的清清楚楚,设计模式不说每种都用过,但是也能深入理解个十四五种。编程能力这个我觉得不好去评价,但是拿一个2000W用户根据姓名年龄排序这种题目也能信手拈来。最后就是架构能力,这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统,防重请求的设计能快速搞定而没

阅读全文

与AQS算法的查询树构造相关的资料

热点内容
服务器和数据库怎么联系 浏览:631
hbase配置压缩 浏览:916
java000 浏览:477
华为手机文件夹的字体颜色 浏览:634
安卓怎么换相机 浏览:933
华为相片文件夹怎么删除重复照片 浏览:314
plc编程视频教程大全 浏览:938
直播用哪个app播放背景音乐 浏览:850
点歌机系统app在哪里下载 浏览:609
javadate类型转换string 浏览:694
RPG游戏解压后乱码 浏览:988
无线通信的几个密钥算法 浏览:644
王者荣耀app数据修复在哪里 浏览:429
基于单片机饮水机温度控制系统的设计 浏览:455
c中委托被编译后的结构 浏览:152
飞燕app怎么注销账号 浏览:895
cad命令缩小 浏览:155
linux发展史 浏览:630
服务器选用什么CPU比较好 浏览:334
明星怎么宣传安卓 浏览:953