zoukankan      html  css  js  c++  java
  • 笔记:深入理解JVM 第五部分 高效并发 (第12、13章)

    一、第12章 Java 内存模型

    1、Java内存模型


    内存间的交互操作:lock、unlock、read、load、use、assign、store、write


    volatile 变量:保证变量对所有线程可见;禁止指令重排序优化。

    long、double 特殊规则:允许将没有volatile修饰的64位数据操作分成两次32位数据操作。


    Java内存模型的特性:

    (1)、原子性:除了long和double,对基本类型数据访问都是原子的

    (2)、可见性:一个线程修改了共享变量,其他线程能看到。通过volatile、synchronized、final实现。

    (3)、有序性:本线程内看所有操作都是有序的, 即线程内表现为串行;线程外看本线程,所有的操作都是无序的,即指令重排序线程缓存与主内存同步延迟通过volatile、synchronized 可保证有序性。


    2、Java线程

    线程的实现: 通过操作系统的内核线程(轻量级进程)实现

    线程的调度:采用抢占式调度

    状态转换:New、Runnable、Waiting、Blocked、Teminated



    二、第13章 线程安全和锁优化

    1、线程安全

    (1)、不可变:final

    (2)、绝对线程安全:难以实现

    (3)、相对线程安全:Vector、Hashtable、同步集合等

    (4)、线程兼容:HashMap、ArrayList等

    线程安全实现方法

    (1)、互斥同步:synchronized 和 Lock

    (2)、非阻塞同步:CAS

    (3)、无同步方案:ThreadLocal



    2、锁优化

    (1)、自旋锁:就是一个空的while 循环。

    (2)、锁消除

    (3)、锁粗化

    (4)、轻量级锁:CAS。

    (5)、偏向锁:锁偏向于第一个获得它的线程。







  • 相关阅读:
    HDU 1003 Max Sum
    HDU 1728 逃离迷宫
    UVA 10057 A midsummer night's dream.
    HDU 1232 畅通工程
    poj3331
    poj3481
    poj1053
    poj3281
    poj3199
    !!! Gridview的多种使用方法总结
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276176.html
Copyright © 2011-2022 走看看