zoukankan      html  css  js  c++  java
  • JAVA 1.6锁状态转换


    JVM 学不好 并发就学不好

    面试问题
    Object 有哪些方法
    syn实现过程

    wait notify 为什么要设计到Object上而不是接口?虽然可以 但是面向对象的思想 子类
    object.wait thread.sleep 的区别?

    wait释放锁 挂起

    32位锁状态()
    JDK1.6对锁优化 锁的状态从 无锁->偏向锁->轻量级锁->重量级锁(把所有等待线程放入)
    JDK1.6之前 synchon 性能不高 ,之后优化 建议使用synchon
    分段锁 curruntlok 用的就是syn
    JVM源码



    内核态到核心态 切换 耗费性能
    轻量级锁 拿不到锁就阻塞式不合理的 所以用自适应的自旋锁 但是存在激烈的竞争 自旋次数多会浪费cpu,以短暂cpu负载 换取线程笨重的切换 多次自旋,浪费cpu 导致锁的膨胀 -> 重量级锁


    多线程进入 能否抢到锁 抢不到进入队列
    重量级锁 :Entry List 同步等待锁的队列

    synchoronized是JVM的内置锁,而lock是Java代码实现的。lock是sync对的扩展,完全可以替代后者。lock可以重入,允许同一个线程连续多次获得同一把锁。其次,lock独有的功能有:

    1、可以响应中断,sync要么获得锁执行,要么保持等待。而重入锁可以响应中断,使得线程在迟迟得不到锁的情况下,不用再等待。主要由lockInterruptibly()实现,这是一个可以对中断进行响应的锁申请动作,锁中断可以避免死锁。

    2、锁的申请可以有等待时限,用tryLock()可以实现限时等待,如果超时还未获得锁会返回false,也防止线程迟迟得不到锁时一直等待,可以避免死锁。

    3、公平锁,即锁的获得按照线程先来后到的顺序依次获得,不会产生饥饿现象。sync的锁默认不公平,可通过传入构造方法的参数实现公平锁。

    4、重入锁可以绑定多个Condition条件,这些Condition通过调用await/singal实现线程间通信。





    4.




    4

  • 相关阅读:
    java 寒假作业
    java 搭积木
    java 移动距离
    java 垒骰子
    java 饮料换购
    java 牌型种数
    ONOS基础教程(QuickStart with a VM)
    Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
    PM2使用基本介绍
    nodejs项目部署
  • 原文地址:https://www.cnblogs.com/huangzedong/p/12041026.html
Copyright © 2011-2022 走看看