设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

硬件内存模型到 Java 内存模型,这些硬核知识你知多少?(3)

发布时间:2019-11-08 17:32 所属栏目:21 来源:平头哥
导读:一个线程在另一个线程上调用 interrupt ,Happens-Before 被中断线程检测到 interrupt 被调用。 publicclassDemo{ privatestaticintcount=0; publicstaticvoidmain(String[]args)throwsInterruptedException{ Threa

一个线程在另一个线程上调用 interrupt ,Happens-Before 被中断线程检测到 interrupt 被调用。

  1. public class Demo { 
  2.     private static int count = 0; 
  3.     public static void main(String[] args) throws InterruptedException { 
  4.         Thread t1 = new Thread(() -> { 
  5.             // t1 线程可以看到被中断前的数据 
  6.             System.out.println(count); 
  7.         }); 
  8.         t1.start(); 
  9.         count = 25; 
  10.         // t1 线程被中断 
  11.         t1.interrupt(); 
  12.     } 

mian 线程中调用了 t1 线程的 interrupt() 方法,mian 对 count 的修改对 t1 线程是可见的。

7、终结器规则

一个对象的构造函数执行结束 Happens-Before 它的 finalize()方法的开始。“结束”和“开始”表明在时间上,一个对象的构造函数必须在它的 finalize()方法调用时执行完。根据这条原则,可以确保在对象的 finalize 方法执行时,该对象的所有 field 字段值都是可见的。

8、传递性规则

这条规则是指如果 A Happens-Before B,且 B Happens-Before C,那么 A Happens- Before C。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读