- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 [多线程] - AQS简介
文章目录一、AQS简介1. 什么是AQS2. AQS类的实现一、AQS简介1. 什么是AQSAQS是 AbstractQueuedSynchronizer的简写,中文译作抽象同步队列,它是实现同步器的基础组件,JUC(Java.util.cuncurrent包)中的大多数锁都是通过AQS设计实现的,在大多数情况下我们可能会很少能够接触到AQS,但是了解下AQS的原理还是有助于我们理解Java中的锁机制。2. AQS类的实现为了方便理解,我们先将AQS的类图粘上(下文中AbstractQueuedS
2020-12-29 14:06:03 211 2
原创 [多线程] - Java中的锁的分类
文章目录前言一、乐观锁和悲观锁二、共享锁与排它锁三、公平锁和非公平锁四、可重入锁和不可重入锁五、轻量级锁,偏向锁,自旋锁,重量级锁前言相信很多同学在学习多线程的时候,被各种各样的锁弄得七荤八素,今天我就准备针对这些锁做一个梳理,喜欢的同学请记得一键三连!一、乐观锁和悲观锁首先我们先来说下乐观锁和悲观锁,乐观锁与悲观锁最初是数据库设计者提出的改变,后在JAVA的并发包中也提供了实现。乐观锁和悲观锁主要是设计者针对线程之间不同的竞争程度提出的两种优化策略。当前线程间对于共享变量如果不存在竞争或者竞争并不
2020-12-23 10:33:26 148 1
原创 [多线程] - 锁的升级与对比(java中的偏向锁、轻量级锁、重量级锁)
文章目录前言一、偏向锁1. 什么是偏向锁2. 偏向锁的实现原理2.1 对象头2.2 偏向锁的获取2.3 偏向锁的关闭二、轻量级锁1. 什么是轻量级锁2. 轻量级锁的获取3. 轻量级锁的解锁三、重量级锁1. 什么是重量级锁2. 重量级锁的获取四、锁的升级与特点1. 锁的升级2. 锁的特点1. 锁的标志位2. 锁的特点前言最近整理了很多关于多线程的理论概念与底层实现,这里我尽量的使用图文结合的方式方便大家理解,如果有不清楚的地方也欢迎大家留言,我基本每天都在,可以在看到的第一时间回复。一、偏向锁1. 什
2020-12-22 15:18:15 473 4
原创 [多线程] - CAS算法(乐观锁与悲观锁)
文章目录一、乐观锁与悲观锁二、CAS算法一、乐观锁与悲观锁在日常的开发中为了保证共享变量的线程安全,大多数程序员的潜意识行为就是为这个共享变量的作用域加锁,就比如常见的使用synchronized关键字来同步代码块。但是简单粗暴的加锁真的是最优解吗?假如被锁住的共享变量并不会被频繁修改,但是synchronized实现的同步无疑会引起线程的堵塞从而降低程序的运行效率。这个时候我们有什么思路可以优化吗?当然可以,JDK的设计者基于这种情况早已给出了很多种解答方式。在JDK1.5后java通过排它锁,乐观锁
2020-12-21 14:06:12 753 1
原创 [多线程] - java内存模型(JMM内存模型)
文章目录前言一、Java内存模型的基础二、 顺序一致性模型1. 什么是顺序一致性模型2.as-if-serial3.happens-before三、后记前言《Java并发编程的艺术》的前三章内容有点乱,我在尽自己最大的能力捋一下前三章的核心知识点分享出来,这里还是和之前的想法一样,如果是没有基础的小白,千万不要买这本书,推荐可以去看下《Java并发编程之美》。一、Java内存模型的基础之前我提出过一个这么的概念来简化大家对线程的理解:无论我们在编码层做多么复杂的业务处理,对于计算机而言就只有三个
2020-12-17 17:02:26 484 3
原创 [多线程] - 并发编程的性能瓶颈(CPU上下文切换与资源限制)
文章目录前言一、并发编程的瓶颈二、CPU的上下文简介1. 什么是CPU的上下文2. 上下文切换3. 如何减少上下文切换三、资源限制1. 什么是资源限制2.如果避免资源限制四、死锁前言《Java多线程编程核心技术》中相关的内容已经更新的差不多了,接下来我会将《Java并发编程的艺术》中有价值的知识点做一个梳理更新,顺便分享下电子书的链接,该系列文章配合电子书一起学习效果更佳。Java并发编程的艺术链接:https://pan.baidu.com/s/18H60E_8KDO9uNIuWdghzcg提
2020-12-16 15:07:16 1244 1
原创 [多线程] - Lock对象的使用详解
文章目录一、Lock对象简介二、Lock对象的应用1.Lock对象的同步性验证1)Lock接口的实现类2)Lock对象实现同步3)多代码块之间的同步性4)unlock的使用2. Condition与多路通知1)condition实现wait/notify通知模型2)选择性通知3)Condition对象的总结4) Condition对象的面试题三、Lock对象的锁特性1.公平锁与非公平锁2.读写锁(共享锁与排它锁)一、Lock对象简介按照惯例,我们在介绍一个对象前首先要翻译一下他的语义:什么,锁?是不
2020-12-11 17:58:57 1199 2
原创 [多线程] - ThreadLocal的使用
文章目录一、TreadLocal是什么二、ThreadLocal的简单应用三、ThreadLocal的源码分析4、InheritableThreadLocal一、TreadLocal是什么在讲述概念前,我们还是先看下官方文档是怎么定义的:观看官方文档,我们可以将Threadlocal做如下简单的定义:ThreadLocal是指的用来保存线程局部变量的一个类,既然用来保存数据,代表我们可以将ThreadLocal看做是一个容器。ThreadLocal是用来解决多个线程使用同一个共享变量的问题,
2020-12-08 16:10:24 526 1
原创 [多线程] - join方法的使用详解
文章目录一、前言二、join方法1. join的Api简介2. join方法的实现3.总结一、前言按照惯例,我们在讲一个知识点之前习惯性的提出一个业务场景的应用来帮助理解,今天咱们就通过一个渣男的案例来讲讲join的相关特性:土木三班陈同学是一个很有名气的渣男,最近陈同学刚刚跟女朋友分了手,处于空窗期的他打开了微信附近的人,挑了个他觉得长得还不错的姑娘发起了搭讪请求。public class ChatUp { // 被搭讪人是否回复 public volatile static boolea
2020-12-07 16:12:54 1722 1
原创 《Java多线程编程核心技术 第二版》 知识点总结
第一章、Java多线程技能1.线程的入门概念 2.从Thread类的构造函数分析创建一个线程需要的基本元素3.如何优雅的停止一个线程第二章、对象及变量的并发访问4.synchronized关键字入门(同步方法与同步代码块)5.volatile关键字第三章、线程间通信6.wait及notify的简介(线程间的通信)...
2020-12-06 16:26:01 169 1
原创 [多线程] - 线程间的通信(wait及notify方法的应用)
文章目录一、前言1. 什么是线程间的通信2. 提供一个简单的业务场景二、 wait及notify的使用1. wait方法的API简介2. notify方法的API简介3. 新的业务需求4. 线程的假死5. notifyAll三、补充1. wait和notify方法的锁状态2. wait和sleep的区别一、前言1. 什么是线程间的通信我想看到标题很多人想到的第一反应大概是疑问什么是线程间的通信?其实这个概念很好理解,在我们的实际的业务开发中,很多场景都是多个线程之间配合进行工作的,就好比一条工厂的流水
2020-12-04 18:09:56 487 1
原创 [多线程] - volatile关键字的特性
文章目录一、volatile关键字是什么二、volatile的引入三、volatile的特性1.volatile与可见性2.volatile与原子性3.volatile与有序性四、volatile面试相关一、volatile关键字是什么在日常的面试中,volatile无疑是被提到频率非常高的一个问题,在各大公众号中也充满了对volatile关键字的解析,那么volatile究竟是什么呢???都被应用在了哪些地方呢???首先在理解保留字方面,我觉得理解这个保留字的中文含义是有助于我们记忆的,那么打开
2020-12-02 13:56:10 485 10
struts2技术内幕+struts2权威指南
2018-03-03
j2ee核心模式
2018-03-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人