笔记

Author Avatar ZTFtrue 发表于 • 2018年03月19日 14:37 • 共 • 268 • 次浏览
  • 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。

  • 可见性:是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。

  • 有序性:即程序执行的顺序按照代码的先后顺序执行。

  • volatile:

//线程1
boolean stop = false;
while(!stop){
    doSomething();
}
 
//线程2
stop = true;
  • 第一:使用volatile关键字会强制将修改的值立即写入主存;

  • 第二:使用volatile关键字的话,当线程2进行修改时,会导致线程1的工作内存中缓存变量stop的缓存行无效(反映到硬件层的话,就是CPU的L1或者L2缓存中对应的缓存行无效);

  • 第三:由于线程1的工作内存中缓存变量stop的缓存行无效,所以线程1再次读取变量stop的值时会去主存读取。

最后编辑于 • 2018年03月19日 14:37 •  

你尚未登录,无法进行回复。