zoukankan      html  css  js  c++  java
  • 并发系列3:Lock锁以及核心类AQS

    Java Lock类提供了语言级别的Synchronized,Lock与Condition配合与Synchronized配合object一样实现了等待/通知机制。但它提供了更高的灵活性,有:1尝试非阻塞地获取锁 2获取锁时能响应中断 3超时获取锁。

    正文

    讲Lock之前,必须先讲讲Java的线程状态以及Synchronized和object如何实现的等待通知机制。

     

    Java线程状态 

    Java线程状态有以下6种:

    1、NEW 初始状态(还没调用start)

    2、RUNNABLE 运行状态

    3、BLOCKED 阻塞状态

    4、WAITING 等待状态

    5、TIME_WAITING 超时等待状态

    6、TERMNATED 终止状态

    Synchronized与object类方法(wait/ notify)配合的流程。

    当我们进入Synchronized语块(进入monitor对象)时,如果没能争取到,会进入同步队列,也就是变成阻塞状态。当进入Monitor对象执行完代码退出语块时,它会提醒阻塞状态的线程再次进行争取。

    如果在进入Synchronized语块时,使用锁对象的wait()方法,会进入锁对象的等待队列,并释放锁,直到另一个进入语块的对象使用该锁对象的notify()方法,它会唤醒锁对象等待队列下的线程并进入同步队列参与锁的争取。

    Lock

    详细内容后继补充个,暂时贴上思维导图和AQS源码解析。

    AQS源码解析

    参考我另一篇博客 https://www.cnblogs.com/llsblog/p/10629784.html

  • 相关阅读:
    EXP8
    EXP7
    数据库作业
    windows下如何编译运行龙脉代码
    CVE-2019-6340 Drupal8's REST RCE 漏洞复现
    小黄衫获奖感言
    Exp6 MSF应用基础
    Exp5
    实验一 密码引擎-4-国䀄算法交叉测试(选做)
    2020-2021-2 20175335 丹增罗布 《网络对抗技术》Exp1 PC平台逆向破解
  • 原文地址:https://www.cnblogs.com/llsblog/p/10629197.html
Copyright © 2011-2022 走看看