欢迎光临散文网 会员登陆 & 注册

【尚硅谷】大厂必备技术之JUC并发编程

2023-03-23 15:13 作者:rickqaq  | 我要投稿


02.尚硅谷_JUC-JUC概述和进程线程概念(1) P2 - 04:17



管程(monitor)是保证了同一时刻只有一个进程在管程内活动,即管程内定义的操作在同一时刻只被一个进程调用(由编译器实现).但是这样并不能保证进程以设计的顺序执行

JVM 中同步是基于进入和退出管程(monitor)对象实现的,每个对象都会有一个管(monitor)对象,管程(monitor)会随着 java 对象一同创建和销毁 执行线程首先要持有管程对象,然后才能执行方法,当方法完成之后会释放管程,方法在执行时候会持有管程,其他线程无法再获取同一个管程


04.尚硅谷_JUC-JUC概述和进程线程概念(3) P4 - 05:24


setDamon(true)

 所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。

·原子性:其实之前诗过很多次了,就怎要做什么事情菠么做完,要么就不做,不存在做一半的情况。

·可见性:指当多个线程访问同一个变帚时,一个线程修改了这个变量的值,其他线程能够立即看得到格改的值,

·有序性:即程序抗行的顺序按照代码的先后顺序执行,



07.尚硅谷_JUC-Lock接口概述和实现案例 P7 - 04:46


虚假唤醒




13.尚硅谷_JUC-线程间定制化通信-案例实现 P13 - 09:23




多个condition 可以定制通信


19.尚硅谷_JUC-多线程锁-公平锁和非公平锁 P19 - 00:04


公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。

非公平锁:多个线程去获取锁的时候,会直接去尝试获取,获取不到,再去进入等待队列,如果能获取到,就直接获取到锁。

Abstract Queued Synchronize 抽象同步队列


尝试枷锁 没有所过

如果是自己的重复枷锁




23.尚硅谷_JUC-Callable接口-概述 P23 - 01:35



找一个类,既和Runnable有关系,又和Callable也有关系

Runnable接口有实现类FutureTask

FutureTask构造可以传递Callable



26.尚硅谷_JUC-辅助类(CountDownLatch) P26 - 10:21







29.尚硅谷_JUC-读写锁-概述 P29 - 04:52


悲观锁与乐观锁


mysql 版本号

CAS 操作中包含三个操作数 —— 需要读写的内存位置(V)、进行比较的预期原值(A)和拟写入的新值(B)。

CAS 有效地说明了“ 我认为位置 V 应该包含值 A;如果包含该值,则将 B 放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。 ”这其实和乐观锁的冲突检查+数据更新的原理是一样的。




31.尚硅谷_JUC-读写锁-读写锁的演变 P31 - 09:25


读写锁的优点:

  1. 提高并发性能:读写锁允许多个线程同时进行读操作,从而提高了多线程环境下读操作的并发性能。
  2. 减少锁竞争:相比于使用互斥锁实现并发控制,读写锁可以减少锁竞争,因为多个线程可以同时获取读锁,不必相互等待。
  3. 数据完整性:读写锁可以保证在写操作时具有排他性,防止多个线程同时修改共享数据导致数据不一致。

读写锁的缺点:

  1. 写操作优先级高:由于写操作会破坏共享数据的完整性,因此需要等待所有的读操作完成后才能执行写操作,这可能导致写操作的等待时间较长。
  2. 可能出现饥饿:如果写操作频繁,可能会导致读操作一直等待,从而出现饥饿现象,即某些线程被长期阻塞无法执行。






35.尚硅谷_JUC-阻塞队列-核心方法演示 P35 - 09:40





【尚硅谷】大厂必备技术之JUC并发编程的评论 (共 条)

分享到微博请遵守国家法律