`

Java并发包下锁学习第一篇:介绍及学习安排

阅读更多

Java并发包下锁学习第一篇:介绍及学习安排

   在Java并发编程中,实现锁的方式有两种,分别是:可以使用同步锁(synchronized关键字的锁),还有lock接口下的锁。从今天起,凯哥将带领大家一起豪华参观(详细讲解)在Java并发包(JUC)下locks包下的体系结构。

在这个系列中,我们将会学习并发包下锁实现的原理(我们将跟着源码来分析)、什么是可重入锁、公平锁和非公平锁怎么定义的、为什么synchronized关键字的锁和ReentrantLock默认会选择非公平锁?读写锁和独占锁的比较、跟着源码我们来分析读写锁等和锁相关的知识。学完这个系列教程后,大家将对并发锁有更新的理解,欢迎大家一起学习。

本篇是《凯哥(凯哥Java:kagejava)并发编程学习》系列之《Lock系列》教程的第一篇:《Java并发包下锁学习第一篇》

本文主要内容:java中锁定义及在jdk5以后的并发包(JUC)下锁相关的类及类关系图;怎么学习JUC下锁

凯哥讲解一般步骤:先举生活中的例子,然后从例子中总结,然后在用代码演示。经过这三个步骤来加深大家的印象。

一:锁的理解

在多线程场景下,多个线程要操作同一个资源,这个被竞争的资源就是共享资源。当同时有多个线程一起竞争共享资源的时候,如果一个线程竞争到了这个资源,就需要使用一个手段或者是技术通知其他线程,这个资源已经被占用着,其他线程需要等待才可以。基于这种思想,在我们现实生活中,如何让其他人知道某个东西是你的呢?贴上你的名字、打上标识或者是用一把锁锁着。这样别人就竞争不了了。锁就是这个通知其他人(或线程)的一种手段。所以,在多线程环境下,就是用了这种技术来实现对共享资源的控制。

二:JUC下locks包下体系

我们先来看看JUC下的locks包都有哪些类或接口。

JUC包下锁相关的类:

 

上图中类之间的关系可以简单如下图:

锁之间类图关系:

 

更简单明了的如下图:

 

三:类介绍

AbstractOwnableSynchronizer:队列同步器。

该类是用来构建锁或者其他同步组件的基础框架的顶级抽象类。有两个子类

 

AbstractQueuedLongSynchronizer:是AbstractQueuedSynchronizer类的另一个版本类。区别就在原AbstractQueuedLongSynchronizer类里面状态码使用Long类型的而非int类型的。凯哥在以后文章中将详细介绍AbstractQueuedSynchronizer类的。

AbstractQueuedSynchronizer:队列同步器。

使用比较多的。是构建锁或者其他同步组建的基础框架。其通过一个int成员变量来表示同步状态的。通过内部类Node来实现FIFO(first-in-first-out:即先进先出)的队列来完成获取资源线程排队的操作。

 

Lock:

排他锁的顶级接口。

RenntrantLock:

Lock的实现类。可重入锁。内部有公平锁和非公平锁两个内部类。

 

ReadWriteLock:

读写锁的顶级接口

ReentrantReadWriteLock:

读写锁的子类。内部有读锁和写锁两个内部类来控制着读写分离操作的。

LockSupport:

当要执行阻塞或者是唤醒一个线程的时候,都会使用到lockSupport这个工具类来实现的。

 

Condition:

监视对象。与lock对象配合使用来实现等待/通知模式

 

四:学习安排

通过上面介绍我们对并发包下的locks包有所了解了。在接下来的学习中,我们将会按照上面类介绍的顺序来学习。先学习同步队列,跟着源码来分析主要API;在学习排他锁;然后再学习读写锁;最后学习后面两个类。

0
3
分享到:
评论

相关推荐

    java 并发学习总结

    java并发学习总结 例子:包含(并发容器、同步容器、同步工具、死锁、异常、中断、线程池、返回结果、同步方法等代码例子)

    Java 并发核心编程

    这篇指南主要是为帮助java多线程开发人员理解并发的核心概念以及如何应用这些理念。本文的主题是关于具有java语言风格的Thread、synchronized、volatile,以及J2SE5中新增的概念,如锁(Lock)、原子性(Atomics)、并发...

    13-Java并发编程学习宝典.zip

    13-Java并发编程学习宝典.zip

    java并发工具包详解

    1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    龙果java并发编程完整视频

    第1节你真的了解并发吗? [免费观看][免费观看] 00:27:48分钟 | 第2节理解多线程与并发的之间的联系与区别 [免费观看] 00:11:59分钟 | 第3节解析多线程与多进程的联系以及上下文切换所导致资源浪费问题 [免费观看]...

    java并发编程2

    java并发编程pdf文档第二部分:Java并发编程实战.pdf、Java多线程编程核心技术.pdf、实战Java高并发程序设计.pdf

    JAVA并发编程艺术 高清pdf

    JAVA并发编程艺术 高清pdf : 1.并发变成的挑战 2. java并发机制的底层实现原理 3. java 内存模型 4. java并发编程基础 5.java中的锁。。。。。。。

    《Java并发编程的艺术》源代码

    第1章介绍Java并发编程的挑战,向读者说明进入并发编程的世界可能会遇到哪些问题,以及如何解决。 第2章介绍Java并发编程的底层实现原理,介绍在CPU和JVM这个层面是如何帮助Java实现并发编程的。 第3章介绍深入介绍...

    Java并发编程实战2019.zip

    Java并发编程实战,第1章 简介,第2章 线程安全性 第3章 对象的共享 第4章 对象的组合 第5章 基础构建模块 第6章 任务执行 第7章 取消与关闭 第8章 线程池的使用 第9章 图形用户界面应用程序 第10章 避免...

    java并发工具包 java.util.concurrent中文版用户指南pdf

    1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    Java并发编程实战

    第1章 简介 1.1 并发简史 1.2 线程的优势 1.2.1 发挥多处理器的强大能力 1.2.2 建模的简单性 1.2.3 异步事件的简化处理 1.2.4 响应更灵敏的用户界面 1.3 线程带来的风险 1.3.1 安全性问题 1.3.2 活跃性...

    龙果 java并发编程原理实战

    第4节学习并发的四个阶段并推荐学习并发的资料 [免费观看] 00:09:13分钟 | 第5节线程的状态以及各状态之间的转换详解00:21:56分钟 | 第6节线程的初始化,中断以及其源码讲解00:21:26分钟 | 第7节多种创建线程的...

    Java并发编程学习笔记.rar

    Java并发编程学习笔记

    java并发编程与实践

    java并发编程与实践是java高并发的分析文档,分析并介绍了高并发的解决方案。

    Java并发编程学习笔记.

    Java并发编程学习笔记.

    Java并发工具包

    Java并发工具包java_util_concurrent_user_guide_cn。

    Java并发体系学习思维笔记.rar

    Java并发体系学习思维笔记.rar

    java并发编程艺术

    java并发编程艺术java并发编程艺术java并发编程艺术java并发编程艺术java并发编程艺术

    java并发编程实战源码,java并发编程实战pdf,Java

    java并发编程实战源码 附有本书所有源码,maven 导入 eclipse或idea

Global site tag (gtag.js) - Google Analytics