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

    No1:

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

    No2:

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

    No3:

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

    No4:

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

    No5:

    线程安全的实现方法:

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

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

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

    No6:

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

  • 相关阅读:
    java垃圾回收机制
    mysql的find_in_set函数操作
    mysql中常见的sql语句语法书写操作
    如何破坏双亲委派原则
    mysql中临时表的创建
    spring当中的事务处理
    restTemplate调用操作出现乱码
    mysql中的any_value的基本使用操作
    DTD与XSD的区别
    idea的插件
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/7651886.html
Copyright © 2011-2022 走看看