上一页 1 2 3 4 5 6 7 ··· 12 下一页
摘要: 并发容器-队列 学习材料来源于网络 如有侵权,联系删除 Queue-队列数据结构的实现。分为阻塞队列和非阻塞队列。下列的蓝色区块,为阻塞队列特有方法。 分类 Queue 非阻塞队列 BlockingQueue 阻塞队列 ArrayBlockingQueue 示例1 package icu.shaoy 阅读全文
posted @ 2020-12-02 15:18 shaoyayu 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 并发容器Map 学习材料来源于网络 如有侵权,联系删除 HashMap 简单分析 在了解并发容器之前呢,我们先了解Hash,这一章节是基于个人理解中快速讲解的 我们先从Hash计算,到存储结构,再到源码分析,再到细节介绍 Hash计算 哈希算法(Hash)又称摘要算法(Digest),它的作用是:对 阅读全文
posted @ 2020-12-02 15:16 shaoyayu 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 信号量、栅栏和倒计数器 学习材料来源于网络 如有侵权,联系删除 Semaphore 简称信号量,可以控制多个线程的资源争抢许可。 acquire:获取一个许可,如果没有就等待, release:释放一个许可。 availablePermits:方法得到可用的许可数目 适用场景: 1、代码并发处理限流 阅读全文
posted @ 2020-12-02 15:15 shaoyayu 阅读(264) 评论(0) 推荐(0) 编辑
摘要: AQS抽象队列同步器详解 学习材料来源于网络 如有侵权,联系删除 同步锁的本质 同步锁的本质就是排队 同步的方式:独享锁-单个队列窗口,共享锁-多个队列窗口 抢锁的方式:插队抢(不公平锁)、先来后到抢锁(公平锁) 没抢到锁的处理方式:快速尝试多次(CAS自旋锁)、阻塞等待 唤醒阻塞线程的方式(叫号器 阅读全文
posted @ 2020-12-02 15:13 shaoyayu 阅读(168) 评论(0) 推荐(0) 编辑
摘要: Lock锁接口实现 学习材料来源于网络 如有侵权,联系删除 源码 package java.util.concurrent.locks; import java.util.concurrent.TimeUnit; /** * 与使用{@code sync}方法和语句相比,{@ code Lock}实 阅读全文
posted @ 2020-12-02 15:12 shaoyayu 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 锁和synchronizeed关键字 学习材料来源于网络 如有侵权,联系删除 锁的概念 自旋锁:为了不放弃CPU执行事件,循环的使用CAS技术对数据尝试进行更新,直至成功。 悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁。 乐观锁:假定没有冲突,在修改数据时如果发现数据和之 阅读全文
posted @ 2020-12-02 15:10 shaoyayu 阅读(161) 评论(0) 推荐(0) 编辑
摘要: CAS机制与原子性 学习材料来源于网络 如有侵权,联系删除 概念 Compare and swap比较和交换。属于硬件同步原语,处理器提供了基本内存操作的原子性保证。CAS操作需要输入两个数值;一个旧值A(期望操作前的值)和一个新值B,在操作期间先比较下旧值有没有发生变化,如果没有发生变化,才交换成 阅读全文
posted @ 2020-12-02 15:09 shaoyayu 阅读(1236) 评论(0) 推荐(0) 编辑
摘要: 线程安全 学习材料来源于网络 如有侵权,联系删除 竞态条件与临界区 public class Demo { public inti= 0; public void incr(){ i++; } } 多个线程访问了相同的资源,向这些资源做了写操作时,对执行顺序有要求。 临界区: incr方法内部就是临 阅读全文
posted @ 2020-12-02 15:07 shaoyayu 阅读(110) 评论(0) 推荐(0) 编辑
摘要: volatile关键字 学习材料来源于网络 如有侵权,联系删除 volatile关键字 可见性问题:让一个线程对共享变量的修改,能够及时的被其他线程看到。 根据JMM中规定的happen before和同步原则: 对某个volatile字段的写操作 happens-before每个后续对该volat 阅读全文
posted @ 2020-12-02 15:06 shaoyayu 阅读(97) 评论(0) 推荐(0) 编辑
摘要: JVM多线程内存模型详解 学习材料来源于网络 如有侵权,联系删除 JVM运行时候数据区 线程独占:每个线程都会有它独立的空间,随线程生命周期而创建和销毁 线程共享:所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁 基于这种内存模型中的多线程操作会出现的问题: 1、所见非所得 2、无法肉眼去检 阅读全文
posted @ 2020-12-02 15:05 shaoyayu 阅读(535) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 12 下一页