首页 > 代码库 > 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 并发编程基础导航