简介

  从JDK1.5,java使用新的JSR-133内存模型;JSR-133使用happens-before的概念来阐述操作之间的内存可见性;在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么者两个操作之间必须要存在happens-before关系;这里两个操作可以是在一个线程之内,也可以是在不同线程之间;

happens-before八大原则

  1.程序次序原则:

    在一个线程内,按照代码的顺序,书写在前面的代码优先于书写后面的代码;

  2.管程锁定规则:

    一个unlock操作先行发生于后面对同一个锁的lock操作,注意是同一个锁;

  3.volatile原则:

    对于一个volatile变量的写操作先行发生于后面对变量的读操作;

  4.线程启动原则:

    Thread对象的start()方法优先于此线程的每一个动作;

  5.线程终止原则:

    线程中所有的操作都优先发生于此线程的每一个动作;

  6.对象中断原则:

    对象的interrupt()方法的调用优先发生于被中断线程的代码监测中断事件的发生;先中断再检测;

  7.对象终结原则:

    一个对象的初始化(构造函数执行完毕)完成优先发生于它的finalize()方法的开始;

  8.传递性

    如果操作A先行发生于操作B,而操作B又先行发生于操作C,则可以得出操作A先行发生于操作C;

最新文章

  1. 前台获取Dropdownlist选中的text
  2. Eclipse FreeMarker 插件安装
  3. struts2结果(Result)
  4. sql索引实例
  5. poj 2239 Selecting Courses (二分匹配)
  6. Oracle EBS的BIP报表中显示特殊字体
  7. css3属性column知多少
  8. 超快的 FastText
  9. php如何控制用户对图片的访问 PHP禁止图片盗链(转载)
  10. Maven2的配置文件settings.xml(转)
  11. MT4 做指标模版
  12. SQL清除所有数据库日志脚本
  13. sudo 无效命令
  14. docker 安装 mongodb
  15. 新版seqseq接口说明
  16. mysql学习二、SQL常用数据类型
  17. quartz和spring集成使用一例子【我】
  18. python的基本用法(三)字符串常用函数
  19. 整数数字调节框QSpinBox
  20. Problem A: 编写函数:三个数的最大最小值

热门文章

  1. MySQL树形结构的数据库表设计和查询
  2. Java8-19-lambda 重构代码
  3. Windows系统在Python2.7环境下安装numpy, matplotlib, scipy - Lichanghao Blog
  4. mysql JOIN查询
  5. 将mysql数据库集成到idea中
  6. 前阿里数据库专家总结的MySQL里的各种锁(上篇)
  7. svg和css3创建环形渐变进度条
  8. 讨论一下.NET里,对cookie身份验证的超时的处理
  9. JavaScript入门进阶(二)
  10. 【colab pytorch】使用tensorboard可视化