文档章节

Java 的锁

业余编程人士
 业余编程人士
发布于 2017/06/19 11:49
字数 350
阅读 3
收藏 0

对象头 Mark Word,用来描述对象的Hash 过期时间 年龄 垃圾回收标记  锁记录 线程ID所有信息 ,32位。

偏向锁:偏向于已经占有此线程的锁,默认启动 -XX:+UseBiasedLocking. 在竞争不激烈下提高性能。

Vector 线程安全,里面会走syncronised{} 性能有所下降 但是加上倾向锁 弥补性能缺口.

自旋锁:存在竞争时候,线程可以很快获取,不需要把线程挂起就可以获得锁,同步块尽量短,自旋成功率就提高了,节省线程 开始 和 释放 的操作时间,提高性能。Spinlocks

Summary: 试偏向锁,轻量级锁,都失败后尝试 自旋锁。失败后 尝试普通锁。

优化方法

  1. 尽量不要用syncronised 方法 可以在具体行家syncronised块 来减少锁持有时间。
  2. 大对象拆分成小对象,提高并行对,降低锁竞争,提高偏向锁和轻量级锁的成功率 eg: ConcurrentHashMap. Collections.syncronisedMap(Map) - > get() put() 有锁,内部分成多个小的Segment<K,V> 而不是一个大的。

锁分离:读锁 和 写锁 分离。

Eg: LinkedBlockingQueue put() 和 take() 互不影响。

无锁:锁是悲观的操作 无锁是乐观的操作。CAS(Compare and Swap), 非阻塞。

Eg: AtomicInteger, getAndSet(int Value) ,拿出来同时也set同步了,里面全是无锁操作 性能很高。

 

 

 

© 著作权归作者所有

业余编程人士
粉丝 5
博文 19
码字总数 9137
作品 0
其他
程序员
私信 提问
Java Synchronized

Java Synchronized 1 引言 在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对synchronized进行了各种优化之后,有些情况下它并不那么重了...

秋风醉了
2016/03/18
140
0
CAS原理 Java SE1.6中的Synchronized

在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁(后面的章节还会谈到锁)。 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延...

指尖的舞者
2014/04/23
5.2K
0
利用 Java dump 进行 JVM 故障诊断

引言 对于大型 java 应用程序来说,再精细的测试都难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。...

candies
2014/03/03
410
0
Java 并发编程源码解析汇总篇

java并发编程,内存模型 java并发编程,volatile内存实现和原理 Java并发编程,并发基础 Java 并发编程,线程池(ThreadPoolExecutor)源码解析 Java并发编程,Executor 框架介绍 Java并发编...

郑加威
2018/12/23
0
0
Java核心(三)并发中的线程同步与锁

乐观锁、悲观锁、公平锁、自旋锁、偏向锁、轻量级锁、重量级锁、锁膨胀...难理解?不存的!来,话不多说,带你飙车。 上一篇介绍了线程池的使用,在享受线程池带给我们的性能优势之外,似乎也...

王磊的博客
2018/11/22
139
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部