
JUC
文章平均质量分 84
线程并发、共享模型详解
李巴巴
smile
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程共享模型----之----无锁(三)
无锁与管程的区别:管程 ---- 悲观锁 ---- 阻塞无锁 ---- 乐观锁 ---- 非阻塞独占锁是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。而另一个更加有效的锁就是乐观锁。所谓乐观锁就是,每次不加锁,而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。CAS 就是一种乐观锁。原创 2022-04-14 11:20:44 · 781 阅读 · 0 评论 -
线程共享模型详解
线程共享模型----之----管程(一)线程共享模型----之----内存(二)线程共享模型----之----无锁(三)线程共享模型----之----不可变(四)线程共享模型----之----工具(五)原创 2022-04-02 13:49:04 · 954 阅读 · 0 评论 -
线程共享模型----之----内存(二)
JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等。JMM 体现在以下几个方面:原子性 - 保证指令不会受到线程上下文切换的影响可见性 - 保证指令不会受 cpu 缓存的影响有序性 - 保证指令不会受 cpu 指令并行优化的影响原创 2022-04-02 14:15:05 · 502 阅读 · 0 评论 -
线程共享经典面试题之交替输出(三种解法)
题目: 三个线程交替输出 abc,即 要求输出 abcabcabcabcabc 该如何实现?(其中线程1 输出 a 5 次,线程2 输出b 5 次,线程3 输出 c 5 次)。该题目可由下面三种解法:一、wait & notify 版二、await & signal 版三、park & unpark 版如果对线程共享不了解的小伙伴可以去看看这篇文章:看完之后这道面试题就迎刃而解了一、wait & notify 版通过设置 等待...原创 2022-04-02 13:52:15 · 1308 阅读 · 0 评论 -
Java - JUC详解
一、概述1.1 什么是JUC?JUC是java.util.concurrent包的简称,在Java5.0添加,目的就是为了更好的支持高并发任务。让开发者进行多线程编程时减少竞争条件和死锁的问题!1.2 什么是进程?程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还要用到磁盘、网络等设备。进程就是用来加载指令,管理内存管理IO的。 当一个进程被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 进程就可以视为一个实例。原创 2022-04-02 13:51:20 · 6561 阅读 · 0 评论 -
线程共享模型----之----管程(一)
一、共享模型之管程1.1 synchronized锁在介绍synchronized 之前,先介绍两个概念:临界区(Critical Section):一段代码块内如果存在对共享资源的多线程读写操作,称这段代码块为临界区。 竞态条件(Race Condition):多个线程在临界区内执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了竞态条件。为了避免临界区的竞态条件发生,有多种手段可以达到目的: 阻塞式的解决方案:synchronized,Lock 非阻塞式的解决方.原创 2022-04-02 13:54:47 · 1315 阅读 · 0 评论