Java多线程之内存可见性

2018-09-11  本文已影响4人  Java_Explorer

可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到。

共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量。

Java内存模型(JMM)

两条规定


要实现共享变量的可见性,必须保证两点:


Java语言层面支持的可见性实现方式:

synchronized能够实现:

JMM关于synchronized的两条规定:

线程解锁前对共享变量的修改在下次加锁时对其他线程可见


线程执行互斥代码的过程:

  1. 获得互斥锁
  2. 清空工作内存
  3. 从主内存拷贝变量的最新副本到工作内存
  4. 执行代码
  5. 将更改后的共享变量的值刷新到主内存
  6. 释放互斥锁
上一篇下一篇

猜你喜欢

热点阅读