- 博客(6)
- 资源 (17)
- 论坛 (15)
- 收藏
- 关注
原创 【Java并发编程实战】—– AQS(四):CLH同步队列
在【Java并发编程实战】—–“J.U.C”:CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形。其主要从两方面进行了改造:节点的结构与节点等待机制。在结构上引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获取锁、入队列、释放锁等实现都与头尾节点相关,并且每个节点都引入前驱节点和后后续节点的引用;在等待机制上由原来的自旋改成阻塞唤醒。其结构如下:知道其结构了,我们再看看他的实现。
2015-12-30 08:31:32
10301
原创 【Java并发编程实战】—– AQS(三):阻塞、唤醒:LockSupport
在上篇博客(【Java并发编程实战】—– AQS(二):获取锁、释放锁)中提到,当一个线程加入到CLH队列中时,如果不是头节点是需要判断该节点是否需要挂起;在释放锁后,需要唤醒该线程的继任节点lock方法,在调用acquireQueued():if (shouldParkAfterFailedAcquire(p, node) && parkAndCheckI
2015-12-27 11:28:58
11438
3
原创 【Java并发编程实战】-----“J.U.C”:AQS分析(二):获取锁、释放锁
上篇博客稍微介绍了一下AQS,下面我们来关注下AQS的所获取和锁释放。AQS锁获取AQS包含如下几个方法:acquire(int arg):以独占模式获取对象,忽略中断。acquireInterruptibly(int arg): 以独占模式获取对象,如果被中断则中止。acquireShared(int arg): 以共享模式获取对象,忽略中断。acquireSharedInterruptibly
2015-12-24 17:53:20
5800
原创 【Java并发编程实战】-----“J.U.C”:AQS分析(一)
在前面博客中,LZ讲到了ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLatch,他们都有各自获取锁的方法,同时相对于Java的内置锁,他们具有明显的优势:花最小的空间开销创建锁、最少的时间开销获得锁、使用更加方便灵活。参考Java的内置锁,对于JUC同步器而言,他应该具备两个最基本的功能:获取锁,释放锁。其中获取锁应该是先判断当前
2015-12-17 17:50:01
6113
原创 【Java并发编程实战】-----“J.U.C”:CLH队列锁
在前面介绍的几篇博客中总是提到CLH队列,在AQS中CLH队列是维护一组线程的严格按照FIFO的队列。他能够确保无饥饿,严格的先来先服务的公平性。下图是CLH队列节点的示意图:在CLH队列的节点QNode中包含有一个locked的字段,该字段表示该节点是否需要获取锁,为true表示需要获取,为false表示不需要获取。在CLH队列中,节点与节点之间并不是通过next指针来连接的而是通过myPred
2015-12-10 09:47:55
7972
2
原创 【Java并发编程实战】—–“J.U.C”:CAS操作
CAS,即Compare and Swap,中文翻译为“比较并交换”。对于JUC包中,CAS理论是实现整个java并发包的基石。从整体来看,concurrent包的实现示意图如下:i++是一个非常经典的操作,它几乎充斥着我们每个人编写的代码中。我们知道i++是可以分解的,它分解为getI()、i + 1 、setI三个步骤,所以它并不是原子操作。如果i==1,执行两次i++操作,我们期望的结果是3
2015-12-07 09:27:42
4555
基于J2EE购物网站的设计与实现--源码
2013-06-16
jspSmartUpload组件,文件上传、下载
2011-10-09
老干爹/Cloud-Admin
2018-08-26
Spring源码
2018-05-23
Edraw Max for mac 亿图图示 8.4 中文破解版
2018-04-23
chenssy的留言板
发表于 2020-01-02 最后回复 2020-05-10
大牛,求教: collection was not processed by
发表于 2013-05-11 最后回复 2013-05-11
Hibernate问题
发表于 2012-11-12 最后回复 2012-11-13
东软国际怎么样啊
发表于 2012-10-17 最后回复 2012-11-12
JDialog监听器问题
发表于 2012-05-08 最后回复 2012-10-16
Spring 3 AOP报错
发表于 2012-07-25 最后回复 2012-08-09
jsp页面怎么调用servlet中生成的验证码
发表于 2011-10-22 最后回复 2012-06-29
为什么使用pl/sql developer 和使用sql*plus得到的结果不同呢
发表于 2012-04-17 最后回复 2012-04-17
Struts 2多文件上传路径问题
发表于 2012-03-26 最后回复 2012-03-26
关于ckeditor的问题
发表于 2011-10-31 最后回复 2012-03-26
[已答复]博客打不开。。
发表于 2012-03-02 最后回复 2012-03-03
关于tomcat6.0连接池的配置问题
发表于 2011-10-10 最后回复 2011-10-10
使用jsmart时报NullPointerException异常??
发表于 2011-10-08 最后回复 2011-10-08
关于请求转发的问题。。
发表于 2011-09-23 最后回复 2011-09-23
迷茫。。。求解???
发表于 2010-10-21 最后回复 2010-10-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝