zoukankan      html  css  js  c++  java
  • 《java虚拟机》----线程安全和锁优化

    No1:

    线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。

    No2:

    java语言中各种操作共享的数据分为以下5类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立

    No3:

    共享数据不可变:final关键字、String对象、枚举类型

    No4:

    实际上没有绝对线程安全,因为就算一个对象的线程安全的,同时调用也有可能产生错误,这时就需要在调用时同步

    No5:

    线程安全的实现方法:

    1)互斥同步:synchronized(等待可中断(即放弃等待)、公平锁(按申请锁的时间顺序来获取锁)、锁绑定多个条件(ReentrantLock对象绑定多个condition对象))

    2)非阻塞同步:不停重试

    3)无同步方案(可重入代码、线程本地存储)

    No6:

    锁优化:自旋锁与自适应自旋、锁消除、锁粗化、轻量级锁、偏向锁

  • 相关阅读:
    115. 不同的子序列
    114. 二叉树展开为链表
    基于Docker结合Canal实现MySQL实时增量数据传输
    Docker-Compose
    Docker容器的创建、启动、和停止
    ES集群
    ES
    Docker配置JDK1.8镜像
    Docker及Docker-Compose的使用
    docker安装jdk
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/7651886.html
Copyright © 2011-2022 走看看