• 笔记:深入理解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)、偏向锁:锁偏向于第一个获得它的线程。







  • 相关阅读:
    jms学习笔记
    UML类图与类的关系详解
    javolution学习--介绍
    Eclipse中10个最有用的快捷键组合
    [疯狂Java]JDBC:PreparedStatement预编译执行SQL语句
    Oracle OLAP 与 OLTP 介绍
    DRDS SQL兼容性
    DRDS 概述
    跨时代的分布式数据库 – 阿里云DRDS详解(转)
    java.net.UnknownHostException: www.terracotta.org
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276176.html
Copyright © 2020-2023  润新知