Java中的一些锁

概念: 我们知道有活锁 死锁,活锁里面有悲观锁和乐观锁

1.悲观锁,我的理解是两个男孩张三和李四,在约同一个女孩恋爱,每次都是张三约成功了,李四不成功,所有李四有点悲催,他就是一个悲观锁,

对于程序来说同一个资源,两个线程去占用,但是没有都是一个线程对资源占用,另一个无法占用,Synchronized。

2.乐观锁,我的理解是两个男孩张三和李四,在约同一个女孩恋爱,都可以约到,但是女孩同时只能约一个,只能在一个约完了另一个才可以约。

对于程序来说同一个资源,两个线程去占用,一次只能是一个线程去占用资源,在Java中,CAS是乐观锁的,但是为了防止ABA问题,又加了时间版本来防止ABA问题。

3.死锁 我的理解是两个男孩张三和李四,在约同一个女孩恋爱,但是女孩答应了两个人,于是两个人开车来接,可是在十字路口,两个人你不让我,我不让你,最后都约不到。

锁会带来CUP上下文的切换,影响效率。

    在Java中,每个对象都有一个mark标记,


图片来源:ifeve.com/java-synchronized/%E8%BD%BB%E9%87%8F%E7%BA%A7%E9%94%81/

一些锁的文章

对Java 自旋锁,偏亮锁的详细描述

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

推荐阅读更多精彩内容