zoukankan      html  css  js  c++  java
  • synchronize和volatile 小知识点总结

    ·synchronized锁的是对象而不是代码,锁方法锁的是this,锁静态方法锁的是class,锁定方法和非锁定方法是可以同时执行的。

    锁升级机制是从偏向锁升级为自旋锁,再升级为重量级锁。

    ##volatile

    ·volatile保证线程的可见性,同时防止指令重排序。线程可见性在CPU的级别是用缓存一致性来保证的;

    禁止指令重排序cpu级别是你禁止不了的,那是人家内部运行的过程,提高效率的。但是在虚拟机级别你家的volatile之后呢,这个指令重排序就可以禁止。

    严格的来讲,还是去研究他的内部,它是加了读屏障和写屏障,这个是cpu的一个原话。

    ·对volatile变量写操作时,会在写操作的后面加入一条store屏障指令,将本地内存中的共享变量值刷新到主内存

    ·对volatile变量读操作时,会在读操作的前面加入一条load屏障指令,从主内存中读取共享变量

    ·适用于改变不依赖于当前状态,适合做标识量

    ##happens-before的几个原则:

    程序次序原则、锁定原则、volatile变量原则、传递原则、线程启动原则、线程中断原则、线程终结原则、对象终结原则

  • 相关阅读:
    vim 插件之NERD tree
    vim 插件之supertab
    离开页面时发送请求
    修改属性item1(1变化)
    node+express 中安装nodemon实时更新server.js
    vue封装element中table组件
    mysql常用语句
    mysql新建表
    node+express POST请求
    node+express 发送get请求
  • 原文地址:https://www.cnblogs.com/SpaceKiller/p/12601365.html
Copyright © 2011-2022 走看看