首页 > 代码库 > Java 并发编程基础导航
Java 并发编程基础导航
一、中断模型:http://ifeve.com/java-interrupt-mechanism/
1. 协作制度, 你要我中断,只是给我一个信号,我啥时候中断,是我的事情。
比如 T1调用T2.interrupt(), T2 如果没有写 if (Thread.intterrupted()) { return or do something}或者 if ( Thread.isintterupted()) { return or do something} T2鸟都不鸟T1
而且 如果T2 在 if() { do something} 中 do nothing或者 嘲讽一下, T1也毫无办法。
2 . API 极易混淆
(static) Thread.interrupted() = Thread.currentThread.isInterrupted(true) 会清除中断标记 , static方法 且名字很容易混淆
(obj) thread.isIntterrupted(bool) 查看是否有中断标记
(obj) thread. interrupt() =》 设置 thread.的中断标记
3. 中断不一定非要用 catch (IntterupttedException) 获取。
可以实施检查 Thread.currentThread().isintteruppted()
sleep/wait的时候,因为自己没有运行权限,所以才需要 catch (IntterupttedException)
二、深入理解JAVA内存模型:http://ifeve.com/java-memory-model-7
三、JVM 并发性: Java 和 Scala 并发性基础 :http://www.ibm.com/developerworks/cn/java/j-jvmc1/index.html
四、CAS基础- 深入Java对象的地址的使用分析 :http://www.jb51.net/article/36410.htm
五、常见锁分类:自旋锁、排队自旋锁、MCS锁、CLH锁
http://coderbee.net/index.php/concurrent/20131115/577/comment-page-1 注释有错误,CLH 和 MCS一部分反了
这篇文章最关键的几点:
1. 普通自旋锁的弱点
公平性,多CPU同步的问题
多cpu同步问题参见:
http://ifeve.com/disruptor-cacheline-padding/
2. CLH的设计目的
公平性,多核CPU自旋位置(自己的node上)
当然 这与AbstractQueuedSynchronizer 中间的CLH不是一个实现方法
3. JUC锁系列:http://www.cnblogs.com/skywang12345/p/3496098.html
六、非阻塞算法在并发容器中的实现 、不变式与暂时非一致性:http://www.ibm.com/developerworks/cn/java/j-lo-concurrent/index.html
七、NIO容器
1. ConcurrentHashMap:
http://www.infoq.com/cn/articles/ConcurrentHashMap
http://blog.csdn.net/wl_ldy/article/details/7228127
2. ConcurrentLinkedQueue、LinkedBlockingQueue
http://www.cnblogs.com/linjiqin/archive/2013/05/30/3108188.html
Java 并发编程基础导航
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。