zoukankan      html  css  js  c++  java
  • 每日一学--synchronized相关

    仅作为个人记录知识点用

    1 用户态与内核态

    2 CAS

    • Unsafe->native方法(C++实现)->汇编指令 lock cmpxchg->锁总线(硬件锁)
    • 硬件锁:MESI、内存屏障
    • 避免系统调用

    3 synchronized锁

    • new Object()内存四个方面
      • markword
      • Class point
      • object attr
      • Padding
    • Markword标识锁类型
    • 锁升级

    3.1 偏向锁

    • 升级时机:有线程来竞争
    • 4秒后启动?是因为有可能4秒内直接进入轻量级锁,就不会有先上偏向锁的过程

    3.2 轻量级锁

    • CAS自旋

    • 自旋过程消耗CPU

    • 升级时机:竞争加剧,JDK1.6之前:自旋线程超过10或超过CPU数/2,JDK1.6之后,加入自适应自旋参数

    3.3 重量级锁

    • Wait()-->进入等待队列

    • 等待队列不消耗CPU

    3.4 锁重入

    • synchronized嵌套
    • 锁和解锁要对称
    • 嵌套锁了多少次记录在栈针
    • 意义:支持父类锁,子类锁嵌套

    4 GC

    • 几种类型:PS+PO,G1,。。。
    • 最多多少代:15代(四bit,最大15),6代

    5 JIT

    • 一般情况下,java代码为解释执行,翻译一句执行一句,监测到被频繁调用的代码会被标记为热点代码

    • 热点代码直接翻译为字节码,不再进行多次翻译的过程

    6 HSDIS

    • 查看synchronized,volatile字节码

    image-20200513222125608

  • 相关阅读:
    Delphi 中多线程同步的一些处理方法
    delphi 讲的比较详细的多线程
    Delphi MSComm 实时串口通讯
    Delphi多线程数据库查询(ADO)
    常用学习链接收藏
    Linux目录及常用命令
    DEBUG和INFO的使用
    git命令
    9.9 接口与工厂
    9.4 Java中的多继承
  • 原文地址:https://www.cnblogs.com/wod-Y/p/12885371.html
Copyright © 2011-2022 走看看