从这次开始接触Java1.5推出的并发包中的东东,先看一下jdk中的并发包:

接下来咱们则会集中对这些并发包中的核心进行深入了解,不光要学会怎么用这些并发包中的类,而且还得知道这些功能背后运行的原理, 所以手踏实地的一步步从基础开始展开对它的剖析,在JDK1.5之前要想对代码进行同步只有一个选择,利用syncronized关键字,但是在之后推出了一个全新的同步方式,那就是Lock锁,这个我们在实际工作中也会经常看到它的使用,下面瞅下它:

而在并发包中很多的组件都是直接或者间接的来源于它,瞅一眼:

所以对于这个接口的理解是至关重要的,而系统的了解它当然得从读官方说明开始,而它的javadoc挺多的。。没关系,逐字进行大体了解:

其中这里涉及到了一个Condition新的对象,如下:

之后学到时再来详细看它,继续往下读Lock:

这里稍加说明一下,对于实际中可能用这么一个场景:大部分都是读操作,只有小部分是写操作,而如果几个线程都是对一个资源进行读取,那很明显是不需要上锁的,而有些情况又需要写则肯定得上锁,此时读写锁ReadWriteLock就有它的适用场景了,也是并发包中的,瞅一眼:

其中可以看到它里面对于读和写锁进行了分开了,先有个大体了解,之后再详学,继续读:

上面的这句话清楚的描述了使用synchronized关键字和使用Lock的它们之间的一个区别,下面继续:

从上面这段说明中可以清晰的感受到Lock跟synchronized的一个不同。

Java精通并发-Lock锁机制深入详解的更多相关文章

  1. Java精通并发-Lock锁方法原理详解

    继续上一次https://www.cnblogs.com/webor2006/p/11756563.html的Lock文档说明进行阅读: 以上就是对于Lock类中官方解读,下面再纵览一下它里面的方法: ...

  2. Java精通并发-死锁检测与相关工具详解

    关于死锁其实在之前https://www.cnblogs.com/webor2006/p/10659938.html的jvm学习中已经详细举过例子了,不过这里再来复习一下,另外是从并发这个专题领域的角 ...

  3. MySQL基础篇(06):事务管理,锁机制案例详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.锁概念简介 1.基础描述 锁机制核心功能是用来协调多个会话中多线程并发访问相同资源时,资源的占用问题.锁机制是一个非常大的模块,贯彻MyS ...

  4. Java精通并发-轻量级锁与重量级锁的变化深入详解

    在上一次https://www.cnblogs.com/webor2006/p/11446129.html的理论的最后谈到了锁的演化,如下: 下面具体来阐述一下: 偏向锁:它是针对一个线程来说, 它的 ...

  5. Java精通并发-Lock与synchronized关键字在底层的区别及实例分析

    在上两次中已经将Lock这个接口的整个官方说明进行了阅读,这次来了解一下它的一个非常重要的实现类: 啥叫“可重入”呢?其实是指一个线程已经拿到了锁,然后该线程还能再次获取这把锁,接下来在了解它之前先用 ...

  6. Java多线程并发08——锁在Java中的应用

    前两篇文章中,为各位带来了,锁的类型及锁在Java中的实现.接下来本文将为各位带来锁在Java中的应用相关知识.关注我的公众号「Java面典」了解更多 Java 相关知识点. 锁在Java中主要应用还 ...

  7. 一文带你看懂Java中的Lock锁底层AQS到底是如何实现的

    前言 相信大家对Java中的Lock锁应该不会陌生,比如ReentrantLock,锁主要是用来解决解决多线程运行访问共享资源时的线程安全问题.那你是不是很好奇,这些Lock锁api是如何实现的呢?本 ...

  8. java反射机制深入详解

    java反射机制深入详解  转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...

  9. “全栈2019”Java多线程第三十章:尝试获取锁tryLock()方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. concurrent(四)Condition

    参考文档:Java多线程系列--“JUC锁”06之 Condition条件:http://www.cnblogs.com/skywang12345/p/3496716.html Condition介绍 ...

  2. INSERT,UPDATE,DELETE时不写日志

    我们在维护数据库的过程中,可能会遇到海量数据的存储和维护,但在有的情况下,需要先试验,然后再对实际的数据进行操作,那么在试验这个过程中,我们是不需要写日志的,因为当你对海量数据操作时,产生的日志可能会 ...

  3. elasticsearch 基于 rollover 管理按时间递增的索引 合并 删除

    https://www.elastic.co/cn/blog/managing-time-based-indices-efficiently Anybody who uses Elasticsearc ...

  4. ASP.NET Core WebApi基于JWT实现接口授权验证

    一.ASP.Net Core WebApi JWT课程前言 我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再 ...

  5. GCN(Graph Convolutional Network)的简单公式推导

    第一步:从前一个隐藏层到后一个隐藏层,对结点进行特征变换 第二步:对第一步进行具体实现 第三步:对邻接矩阵进行归一化(行之和为1) 邻接矩阵A的归一化,可以通过度矩阵D来实现(即通过D^-1*A来实现 ...

  6. linux lnmp环境下 安装apache教程

    linux lnmp环境下 安装apache教程 源码安装 apr ,apr-util 安装apache要用<pre>wget http://mirrors.cnnic.cn/apache ...

  7. wordpress防止垃圾邮件方法

    wordpress防止垃圾邮件方法 安装NoSpamNX插件然后设置Operating mode 为 Block (recommended) save

  8. Linux内核device结构体分析

    1.前言 Linux内核中的设备驱动模型,是建立在sysfs设备文件系统和kobject上的,由总线(bus).设备(device).驱动(driver)和类(class)所组成的关系结构,在底层,L ...

  9. mPython编程环境:Mu

    所谓编程环境,IDE ,就是这个软件里,用mPython写程序,新建文件,编辑 ,运行 ,调试 ,Mu还有一个重要功能烧录(flash),就是把我们的程序编译之后写到芯片中去. Mu下载,安装都很简单 ...

  10. Python3+WebSockets实现WebSocket通信

    一.说明 1.1 背景说明 前段时间同事说云平台通信使用了个websocket的东西,今天抽空来看一下具体是怎么个通信过程. 从形式上看,websocket是一个应用层协议,socket是数据链路层. ...