我的評(píng)論
re: Mysql索引相關(guān)知識(shí)分享 zhangxl 2014-05-09 09:55
@金利鎖業(yè)
這個(gè)公司內(nèi)部分享,個(gè)人覺(jué)得都大多數(shù)開(kāi)發(fā)者來(lái)說(shuō)具有參考價(jià)值
這個(gè)公司內(nèi)部分享,個(gè)人覺(jué)得都大多數(shù)開(kāi)發(fā)者來(lái)說(shuō)具有參考價(jià)值
re: 深入淺出 Java Concurrency (5): 原子操作 part 4 zhangxl 2011-08-11 15:49
@xylz
這里的模擬都使用了synchronized(內(nèi)在鎖)關(guān)鍵字,模擬CAS還有什么意義呢?引入CAS的目的不就是為了較少鎖的競(jìng)爭(zhēng),提高多線程并發(fā)的吞吐率嗎?
我覺(jué)得要模擬也應(yīng)該像AQS那樣,比如,這是AQS的源碼中狀態(tài)變量的原子操作:
A.Q.S里面包含了一個(gè)存儲(chǔ)同步狀態(tài)的變量,它的聲明如下:
private volatile int state;
這里采用了volatile修飾符的原因是為了保證對(duì)state變量的寫(xiě)對(duì)所有的線程都是可見(jiàn)的。但是大家都知道,volatile只能保證變量的可見(jiàn)性,不能保證對(duì)變量操作的原子性,所以A.Q.S里面就采用了CAS(Compare And Swap)操作來(lái)更新state變量的值,代碼如下:
protected final boolean compareAndSetState(int expect, int update)
{ // See below for intrinsics setup to support this
return unsafe.compareAndSwapInt(this, stateOffset, expect, update); }
個(gè)人覺(jué)得這樣才能模擬出CAS的本質(zhì),原子特性。
這里的模擬都使用了synchronized(內(nèi)在鎖)關(guān)鍵字,模擬CAS還有什么意義呢?引入CAS的目的不就是為了較少鎖的競(jìng)爭(zhēng),提高多線程并發(fā)的吞吐率嗎?
我覺(jué)得要模擬也應(yīng)該像AQS那樣,比如,這是AQS的源碼中狀態(tài)變量的原子操作:
A.Q.S里面包含了一個(gè)存儲(chǔ)同步狀態(tài)的變量,它的聲明如下:
private volatile int state;
這里采用了volatile修飾符的原因是為了保證對(duì)state變量的寫(xiě)對(duì)所有的線程都是可見(jiàn)的。但是大家都知道,volatile只能保證變量的可見(jiàn)性,不能保證對(duì)變量操作的原子性,所以A.Q.S里面就采用了CAS(Compare And Swap)操作來(lái)更新state變量的值,代碼如下:
protected final boolean compareAndSetState(int expect, int update)
{ // See below for intrinsics setup to support this
return unsafe.compareAndSwapInt(this, stateOffset, expect, update); }
個(gè)人覺(jué)得這樣才能模擬出CAS的本質(zhì),原子特性。
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 1 | 2 | 3 | |||
4 | 5 | 6 | 7 | 8 | 9 | 10 | |||
11 | 12 | 13 | 14 | 15 | 16 | 17 | |||
18 | 19 | 20 | 21 | 22 | 23 | 24 | |||
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
常用鏈接
留言簿(1)
隨筆分類(17)
- arithmetics(3)
- C/C++(1)
- Cache
- DB(1)
- IOC/AOP(2)
- java concurrency(2)
- java 多線程
- JDK(1)
- JVM(1)
- Linux(1)
- nosql(5)
- Performance
隨筆檔案(28)
- 2014年7月 (3)
- 2014年5月 (1)
- 2014年4月 (1)
- 2013年6月 (1)
- 2013年4月 (2)
- 2013年3月 (1)
- 2012年8月 (1)
- 2012年5月 (1)
- 2012年2月 (6)
- 2012年1月 (1)
- 2011年10月 (1)
- 2011年9月 (1)
- 2011年6月 (2)
- 2009年8月 (3)
- 2008年5月 (1)
- 2006年4月 (2)
文章分類(30)
- AJAX
- common(3)
- DB(3)
- java tools(1)
- JAVA 基礎(chǔ)文章(1)
- java 并發(fā)(3)
- JDBC(1)
- linux(3)
- ORM(包括hibernate等)(2)
- Spring(6)
- SWT、SWING、AWT(2)
- web(2)
- web service
- 優(yōu)化(2)
- 版本控制(1)
文章檔案(30)
- 2013年4月 (1)
- 2013年3月 (1)
- 2012年1月 (2)
- 2011年12月 (1)
- 2011年11月 (1)
- 2011年8月 (2)
- 2011年7月 (1)
- 2011年6月 (4)
- 2011年4月 (3)
- 2009年8月 (4)
- 2008年6月 (1)
- 2008年4月 (1)
- 2007年3月 (2)
- 2006年12月 (1)
- 2006年10月 (2)
- 2006年8月 (1)
- 2006年6月 (1)
- 2006年4月 (1)
相冊(cè)
收藏夾(2)
hibernate
java基礎(chǔ)
mysql
xml
- IBM XSL
- w3c標(biāo)準(zhǔn)的xpath說(shuō)明
- web service ibm
- XPath 示例
- XPath 簡(jiǎn)單語(yǔ)法
- XQuery 1.0 and XPath 2.0 Full-Text Use Cases
關(guān)注
壓力測(cè)試
算法
最新隨筆
- 1.?解決Redis數(shù)據(jù)庫(kù)響應(yīng)延遲問(wèn)題(轉(zhuǎn)載)
- 2.?理想化的 Redis 集群 (轉(zhuǎn)載)
- 3.?Redis 分區(qū)(翻譯)
- 4.?Mysql索引相關(guān)知識(shí)分享
- 5.?數(shù)據(jù)結(jié)構(gòu)-BinaryTree
- 6.?深入學(xué)習(xí)Linux之命令篇-find
- 7.?什么情況下應(yīng)該使用GridFS(翻譯)
- 8.?Mongodb主從復(fù)制實(shí)踐
- 9.?jmap使用
- 10.?為什么實(shí)現(xiàn)了equal方法,一定需要實(shí)現(xiàn)hashCode方法呢?
- 11.?MongoDB學(xué)習(xí)—MongoDB安裝
- 12.?京東碰到的一道面試題
- 13.?HashMap分析
- 14.?12個(gè)小球其中有一個(gè)是次品,不過(guò)不知道輕重,請(qǐng)問(wèn)用天平能用三次測(cè)量的機(jī)會(huì)找出那個(gè)次品嗎?
- 15.?使用java nio 實(shí)現(xiàn) Ping
- 16.?Spring 源碼閱讀(IOC容器)-容器啟動(dòng)2
- 17.?Spring 源碼閱讀(IOC容器)-容器啟動(dòng)1
- 18.?JDBC SavePoint淺析
- 19.?Linux下C訪問(wèn)MySQL實(shí)踐
- 20.?Apache Benchmark(ab)使用
- 21.?Java NIO Demo
- 22.?Amoeba源碼解讀一
- 23.?編寫(xiě)跨平臺(tái)代碼注意事項(xiàng)
- 24.?編寫(xiě)跨平臺(tái)代碼注意事項(xiàng)
- 25.?JavaScript的toString()方法自動(dòng)調(diào)用
搜索
積分與排名
- 積分 - 96408
- 排名 - 601
最新評(píng)論

- 1.?嗯嗯
- 阿斯達(dá)斯
- --安德森
- 2.?re: tomcat 產(chǎn)生heapdump文件配置
- 如果不內(nèi)存溢出,heapdump目錄是不是空的?
- --小龍?jiān)诰€
- 3.?re: Java NIO Demo
- 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
- --zuidaima
- 4.?re: Redis 分區(qū)(翻譯)
- 手機(jī)賺錢(qián)軟件http://www.szapk.cn!!!
- --手機(jī)賺錢(qián)軟件http://www.szapk.cn
- 5.?re: Mysql索引相關(guān)知識(shí)分享
- 很有價(jià)值的分享,值得學(xué)習(xí)
- --任務(wù)大廳
閱讀排行榜
評(píng)論排行榜
- 1.?Mysql索引相關(guān)知識(shí)分享(4)
- 2.?京東碰到的一道面試題(1)
- 3.?Linux下C訪問(wèn)MySQL實(shí)踐(1)
- 4.?Apache Benchmark(ab)使用(1)
- 5.?Java NIO Demo(1)
- 6.?JavaScript的toString()方法自動(dòng)調(diào)用(1)
- 7.?lucene 實(shí)踐(1)
- 8.?Redis 分區(qū)(翻譯)(1)
- 9.?解決Redis數(shù)據(jù)庫(kù)響應(yīng)延遲問(wèn)題(轉(zhuǎn)載)(0)
- 10.?理想化的 Redis 集群 (轉(zhuǎn)載)(0)
- 11.?dom4j學(xué)習(xí)筆記(0)
- 12.?創(chuàng)建mysql innodb數(shù)據(jù)庫(kù)(0)
- 13.?Amoeba源碼解讀一(0)
- 14.?編寫(xiě)跨平臺(tái)代碼注意事項(xiàng)(0)
- 15.?編寫(xiě)跨平臺(tái)代碼注意事項(xiàng)(0)
- 16.?HashMap分析(0)
- 17.?12個(gè)小球其中有一個(gè)是次品,不過(guò)不知道輕重,請(qǐng)問(wèn)用天平能用三次測(cè)量的機(jī)會(huì)找出那個(gè)次品嗎?(0)
- 18.?使用java nio 實(shí)現(xiàn) Ping(0)
- 19.?Spring 源碼閱讀(IOC容器)-容器啟動(dòng)2(0)
- 20.?Spring 源碼閱讀(IOC容器)-容器啟動(dòng)1(0)