JAVA并发:happens-before阐述
2012-01-05 12:14
633 查看
happens-before 是JSR133确定的东东,这个相信大家都知道了。 至于它的作用呢,其实它就是一套规则,只要你的程序中A HB B,那么B就能看到A的操作(无论A/B是否是同一个线程).
其内容为如下:
(注:JMM动作(Java Memeory Model Action),Java存储模型动作。一个动作(Action)包括:变量的读写、监视器加锁和释放锁、线程的start()和join())
happens-before完整规则:
(1)同一个线程中的每个Action(注1)都happens-before于出现在其后的任何一个Action。
(2)对一个监视器的解锁happens-before于每一个后续对同一个监视器的加锁。
(3)对volatile字段的写入操作happens-before于每一个后续的同一个字段的读操作。
(4)Thread.start()的调用会happens-before于启动线程里面的动作。
(5)Thread中的所有动作都happens-before于其他线程检查到此线程结束或者Thread.join()中返回或者Thread.isAlive()==false。
(6)一个线程A调用另一个另一个线程B的interrupt()都happens-before于线程A发现B被A中断(B抛出异常或者A检测到B的isInterrupted()或者interrupted())。
(7)一个对象构造函数的结束happens-before与该对象的finalizer的开始
(8)如果A动作happens-before于B动作,而B动作happens-before与C动作,那么A动作happens-before于C动作。
多线程文章,推荐
http://www.blogjava.net/xylz/archive/2010/07/03/325168.html http://www.goldendoc.org/category/juc/
其内容为如下:
(注:JMM动作(Java Memeory Model Action),Java存储模型动作。一个动作(Action)包括:变量的读写、监视器加锁和释放锁、线程的start()和join())
happens-before完整规则:
(1)同一个线程中的每个Action(注1)都happens-before于出现在其后的任何一个Action。
(2)对一个监视器的解锁happens-before于每一个后续对同一个监视器的加锁。
(3)对volatile字段的写入操作happens-before于每一个后续的同一个字段的读操作。
(4)Thread.start()的调用会happens-before于启动线程里面的动作。
(5)Thread中的所有动作都happens-before于其他线程检查到此线程结束或者Thread.join()中返回或者Thread.isAlive()==false。
(6)一个线程A调用另一个另一个线程B的interrupt()都happens-before于线程A发现B被A中断(B抛出异常或者A检测到B的isInterrupted()或者interrupted())。
(7)一个对象构造函数的结束happens-before与该对象的finalizer的开始
(8)如果A动作happens-before于B动作,而B动作happens-before与C动作,那么A动作happens-before于C动作。
多线程文章,推荐
http://www.blogjava.net/xylz/archive/2010/07/03/325168.html http://www.goldendoc.org/category/juc/
相关文章推荐
- 【死磕Java并发】-----Java内存模型之happens-before
- Java并发(2)- 聊聊happens-before
- Java并发(四):happens-before
- 【死磕Java并发】-----Java内存模型之happens-before
- 【死磕Java并发】-----Java内存模型之happens-before
- 【并发】死磕Java并发:Java内存模型之happens-before
- 死磕 Java 并发 :Java 内存模型之 happens-before
- 【死磕Java并发】--Java内存模型之happens-before
- 死磕Java并发:Java内存模型之happens-before
- Java并发11:Java内存模型、指令重排、内存屏障、happens-before原则
- 我理解的Java并发基础(二):happens-before、可见性与原子性
- java-多线程深入(三)happens-before介绍
- 转:【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)
- 【Java并发编程】:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)
- 深入浅出 Java Concurrency (4): 原子操作 part 3 指令重排序与happens-before法则
- Java多线程--happens-before
- 【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)
- java中几个happens-before规则
- Java 多线程之happens-before规则解释
- 深入浅出 Java Concurrency (4): 原子操作 part 3 指令重排序与happens-before法则