• 深入理解java虚拟机-第13章-线程安全与锁优化


    第十三章 线程安全与锁优化

    线程安全

    java语言中的线程安全

      1 不可变。Immutable 的对象一定是线程安全的

      2 绝对线程安全 一个类要达到不管运行时环境如何,调用者都不需要额外的同步措施,通常需要付出很大甚至是不切实际的代价,在java api中标注自己是线程安全的类,大多数都不是绝对的线程安全

      3 相对线程安全 

      4 线程兼容  对象本身不是线程安全的,但是可以通过在调用端正确地使用同步手段来保证对象在并发环境中可以安全使用

      5 线程对立

    线程安全的实现方法

      1 互斥同步 Murual Exclusion & Synchronization

        常见的并发正确性保障手机,同步是指多个线程并发访问共享数据时,保存证共享数据在同一时刻只被一个线程使用

        最基本的互斥手段是synchronized关键字。

        还可以使用java.util.concurrent包中的锁来实现同步 ReentrantLock,

        JDK1.6对synchronized做了优化,效率与ReentrantLock基本上是完全持平了。

      2 非阻塞同步

        基于冲突检测的乐观并发策略

        CAS操作 Compare-and-Swap

      3 无同步方案

    锁优化

      1、自旋锁与自适应自旋

      2、锁消除

      3、锁粗化

      4、经量级锁

      5、偏向锁

    整本书 可以在Blog :《深入理解Java虚拟机》笔记  中来统查看要点。

  • 相关阅读:
    Codeforces Round #610 (Div. 2)C(贪心,思维)
    Educational Codeforces Round 80 (Rated for Div. 2)C(DP)
    BZOJ2190 仪仗队
    BZOJ3613 南园满地堆轻絮
    BZOJ1084 最大子矩阵
    BZOJ1036 树的统计Count
    BZOJ1452 Count
    BZOJ2242 计算器
    BZOJ2705 Longge的问题
    BZOJ1509 逃学的小孩
  • 原文地址:https://www.cnblogs.com/zyzl/p/4190095.html
Copyright © 2020-2023  润新知