锁机制

1、死锁


1.png

2.png

2、活锁:多个线程一直在执行无意义的工作,消耗资源


3.png

3、悲观锁和乐观锁
(1)Synchornize 悲观锁:先锁住再执行业务操作
(2)CAS乐观锁:先执行业务操作再判断
4、自旋锁:CAS
(1)概念:利用现代处理器都支持的CAS指令,执行时间0.6ns
(2)流程:


4.png

(3)存在的问题:ABA问题,一个线程改动过值后又改回原值,另一个线程进行CAS无法感知!(增加一个版本号进行解决~),jdk提供两个类:①AtomicMarkableReference :标记共享变量有没有被改变过;②AtomicStampedReference :标记共享变量有没有被改变过,并且被改变过几次;
(4)局限:只能保证对一个共享变量进行原子操作(解决方法:AtomicReference )

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容