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

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

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

    ##volatile

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

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

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

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

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

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

    ##happens-before的几个原则:

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

  • 相关阅读:
    kickstart-G
    some advice in work
    Java Applet:练习TextField类和TextArea类的文本事件
    jquery带下拉菜单和焦点图
    炫酷的CSS3抖动样式:CSS Shake
    CSS: iPhone Custom CSS
    css sprite技巧详解
    CSS缎带效果
    css 采集下载
    CSS控制表格嵌套
  • 原文地址:https://www.cnblogs.com/SpaceKiller/p/12601365.html
Copyright © 2011-2022 走看看