Java基础
多线程、集合
Java技术堆
这个作者很懒,什么都没留下…
展开
-
并发容器之ConcurrentHashMap
文章目录ConcurrentHashMap简介关键属性关键类关键cas操作重点方法学习构造方法initTable方法put方法get方法扩容transfer方法总结ConcurrentHashMap简介通过锁分段思想提高并发度JDK1.6版本关键要素segment继承ReentrantLock充当锁的角色,使得每个segment都是线程安全的segment维护了散列表的若干桶,每个桶由...原创 2020-02-16 00:53:56 · 135 阅读 · 0 评论 -
Condition等待通知机制的理解
文章目录Condition简介condition的API介绍condition实现原理等待队列await实现原理signal实现原理await与signal/signalAll的结合思考condition等待通知例子LockSupport简介API等待通知机制==阻塞唤醒机制Condition简介Object的wait和notify是与monitor配合完成线程间等待-通知机制的,只能拥有...原创 2020-02-15 20:25:54 · 377 阅读 · 0 评论 -
读写锁ReentrantReadWriteLock深入理解
文章目录读写锁介绍写锁分析读写锁是怎么记录读写状态的写锁的获取写锁的释放读锁读锁获取锁读锁释放读写锁介绍为了解决线程安全问题,我们会高频使用独占锁synchronized,ReentrantLock独占锁:同一时刻只有一个线程获取锁而在某些业务场景下,大部门是读数据,不会影响数据正确性,使用独占锁会出现性能瓶颈。读写锁:多个读进程可以同时获取锁,但一旦有写进程获取锁,就会阻塞其他所有进程...原创 2020-02-15 16:18:53 · 204 阅读 · 0 评论 -
ReetrantLock深入理解
文章目录ReetrantLock简介重入性的实现原理公平锁与非公平锁公平锁与非公平锁的区别ReetrantLock简介支持可重入性,表示当前线程再次获取重复获取锁不会进行阻塞支持公平锁和非公平锁两种方式重入性的实现原理需要解决的问题:线程获取锁的时候,如果已经获取锁的线程是当前线程直接获取成功如果锁被获取n次,那么只有锁再被释放n次之后,该锁才会释放成功非公平锁获取锁fina...原创 2020-02-15 13:01:03 · 217 阅读 · 0 评论 -
AQS深入理解
文章目录同步队列独占锁独占锁的获取 acquire方法AQS实现的功能对同步状态的管理对阻塞线程进行排队等待通知等底层实现同步队列AQS通过头尾指针管理同步队列的,获取锁失败的线程入队,释放锁对同步队列中的线程进行通知当共享资源被某个线程占有,其他请求该资源的线程将会阻塞,从而进入同步队列。Node={static final Node shared = new Node...原创 2020-02-14 23:34:22 · 323 阅读 · 1 评论 -
实现AQS
文章目录lock简介lock的简单使用trylock的简单使用lock定义的方法ReentrantLock的实现AQS简介AQS使用模板方法实现设计模式重写AQS经验总结AQS可重写的方法实现同步组件时AQS提供的模板方法实现一个同步组件java.util.concurrent包结构其中包含了两个子包:automic和lock,阻塞队列,executors这些都是juc中的精华。这些类的实现...原创 2020-02-14 22:49:05 · 170 阅读 · 0 评论 -
线程池详细理解
文章目录什么是线程池为什么要使用线程池线程池的工作原理线程池的运行状态:线程池的创建线程池的关闭如何合理配置线程池参数介绍几大典型的线程池线程池源码的架构Excutor接口ExcutorService接口ScheduledExcutorService接口ThreadPoolExcutor分析几个重要属性excute方法addWorker方法Worker类什么是线程池线程池为线程生命周期的开销和...原创 2020-02-14 21:20:31 · 101 阅读 · 0 评论 -
深入理解volatile关键字
文章目录并发分析的切入点volatile解决得问题volatile简介volatile实现原理volatile的happens-before关系volatile的内存语义关系volatile的内存语义的实现问题解决并发分析的切入点并发分析的切入点分为 两个核心,三大性质两大核心:JMM内存模型(主内存和工作内存)+happens-before三大性质:原子性,可见性,有序性volatil...原创 2020-02-14 12:03:07 · 127 阅读 · 0 评论 -
Synchronized关键字的理解02
文章目录synchronizedsynchronized的happens-before关系synchronized的内存语义synchronized的优化首先展示一个现象public class SynchronizedDemo implements Runnable { private static int count = 0; public static void mai...原创 2020-02-13 23:50:24 · 70 阅读 · 0 评论 -
Java内存模型以及happens-before规则
文章目录线程安全问题JMM抽象结构并发编程主要完成两个问题:重排序happens-before规则具体七项规则线程安全问题一般是主内存 和 工作内存 数据不一致和重排序导致的。而解决线程安全问题最重要的就是理解Java内存模型JMM多线程环境下完成一件事,一般会涉及到多线程之间的 相互协作,而相互协作又是基于消息通信的JMM抽象结构主内存+线程工作内存线程间是怎样相互协作的呢??你...原创 2020-02-13 23:07:10 · 99 阅读 · 0 评论 -
线程的状态转换以及基本操作
文章目录新建线程线程状态转换线程状态的基本操作interrupted操作join操作 线程同步功能sleep操作yield操作守护线程新建线程继承Thread类,重写run方法实现runable接口,重写run方法实现callable接口 public class CreateThreadDemo { public static void main(String[]...原创 2020-02-13 21:46:41 · 125 阅读 · 0 评论 -
计算机专业学生眼中的并发编程00
文章目录为什么用到并发编程并发编程的优缺点频繁的上下文切换线程安全问题同步机制遵循的规则计算机专业学生眼中的并发编程操作系统概述现代操作系统的四个基本特征阻塞和非阻塞进程的描述和控制进程同步信号量机制信号量应用实现进程互斥访问实现进程同步管程机制(Monitor)任务的两种制约关系死锁概念死锁的预防经典的进程同步问题为什么用到并发编程摩尔定律:我们的计算能力会按指数级别的速度进行增长摩尔定律...原创 2020-02-13 20:16:40 · 118 阅读 · 0 评论 -
synchronized详细理解
文章目录什么是线程安全什么是互斥锁synchronized关键字synchronized的三种应用方式synchronized作用于实例方法synchronized修饰静态方法synchronized同步代码块synchronized底层原理Java对象头与MonitorJava虚拟机对synchronized的优化偏向锁轻量级锁自旋锁锁消除synchronized的关键点synchronized...原创 2020-02-09 14:28:26 · 252 阅读 · 0 评论 -
集合删除对象
文章目录List与Set判断重复对象的区别TreeSet和HashSet关于hashmap存储一个对象,中间改变对象的值,为什么再remove不能用新名字来删除treeSet删除修改了属性的对象Java List的remove()方法陷阱List与Set判断重复对象的区别① List只依赖于equals方法② Set依赖于hashCode、equals方法TreeSet和HashSet...原创 2019-12-23 19:52:49 · 657 阅读 · 0 评论