多线程编程的一些知识点

来源:互联网 发布:十大网络作家排行榜 编辑:程序博客网 时间:2024/05/22 00:25

一:同步方法或同步代码块的区别

    1)同步方法:当JVM执行一个同步方法时,执行中的线程识别该方法的method_info结构是否含有ACC_SYNCHRONIZED标记设置,然后它自动获取对象的锁,调用方法,最后释放锁。如果有异常发生,线程自动释放锁。

    2)同步方法块:同步方法块会越过JVM对获取对象所和异常处理的内置支持,要求以字节代码显示写入功能。如果您使用同步方法读取一个方法的字节代码,就会看到有十几个额外的操作用于管理这个功能。

二:ThreadLocal变量:当需要以线程为单位存储变量实例时,使用ThreadLocal很有意义。

三:volatile关键字使在多线程的使用场景下不管何时读取变量的值,都会检查变量原版拷贝并读取当前的值。

四:易失性变量(被volatile修饰的变量)与同步化:读取易失性变量是同步的,写入易失性变量也是同步的,但非原子操作不是同步的。

五:原子字段更新程序:如果您希望对同步代码的部署进行更多细粒度控制,那么解决方案就是使用一个原子字段更新程序。


0 0