
多线程
要不一起ci个饭
我想去山顶⛰️
展开
-
并发编程——JUC中的重要组件(atomic、信号量、locks、ConcurrentHashMap、线程安全的集合类)这些你都知道吗?
JUC中的重要组件原子类 java.util.concurrent.atomicjava.util.concurrent.locksCallable/Future/FutureTaskSemaphore信号量线程安全的集合类ConcurrentHashMap(重点)理解HashMap的put方法的执行过程.对比HashMap、HashTable、ConcurrentHashMap原子类 java.util.concurrent.atomic原子类内部用的是 CAS 实现,所以性能要比加锁实现 i++ 高原创 2020-08-07 13:33:10 · 1912 阅读 · 0 评论 -
多线程——以Sychronized为例实现锁优化的五个面试问题你知道吗?
以Sychronized为例实现锁优化锁优化1、锁消除2、偏向锁3、自旋锁4、锁膨胀5、锁粗化锁优化一些提高锁的效率的策略优化操作主要是以编译器+JVM两者配合进行的1、锁消除锁消除本质是以编辑器和JVM代码运行的情况智能的判断当前的锁有没有必要加 如果没有必要, 就会直接把锁干掉public class Demo3 { public static void main(String[] args) { //StringBuffer 是线程安全的方法中加了Sychron原创 2020-08-06 17:41:30 · 283 阅读 · 0 评论 -
多线程——关于面试中常见的CAS问题你知道了吗?
关于面试中常见的CAS问题你知道了吗?CASCAS的使用无锁编程CAS缺陷:ABA问题)CASCAS的全称是 compare and swap(字面意思就是比较交换) 他是基于硬件提供的一种基础指令, 也是基于这样的指令, 就可以实现一些特殊的功能(实现锁)针对不同的操作系统,JVM 用到了不同的 CAS 实现原理简而言之,是因为硬件予以了支持,软件层面才能做到。我们假设内存中的原数据v,旧的预期值new,需要修改的新值tmp。比较 new 与 v 是否相等。(比较)如果比较相等,将 tmp原创 2020-08-06 16:54:43 · 436 阅读 · 0 评论 -
多线程——这些锁策略(乐观悲观锁、读写锁、轻量级重量级锁、公平非公平锁、可重入锁)你知道吗?
各种锁策略1、乐观锁VS悲观锁2、读写锁3、重量级锁vs轻量级锁.4、挂起等待锁VS自旋锁5、公平锁Vs非公平锁6、可重入锁7、死锁的典型场景1、乐观锁VS悲观锁乐观锁: 世界大概率是和平的,多个线程竞争一 把锁的概率会很低.(效率高)悲观锁: 世界大概率是出问题的,多个线程竞争一 把锁的概率会很高,会付出更多的成本来进行锁冲突的处理(更安全)两种想法没有优劣之分,要根据具体场景来进行使用.2、读写锁把加锁操作分成了两种.a)读锁b)写锁读锁和读锁之间是没有互斥的(不存在锁竞争)读锁和写原创 2020-08-05 17:45:48 · 2015 阅读 · 0 评论