课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
锁的应用在java编程开发语言的学习过程中是需要重点掌握的编程知识,而今天我们就通过案例分析来了解一下,java编程开发锁的应用优化包含哪些内容。
1、锁消除
锁消除是指:虚拟机即时编译器在运行时,对一些代码要求同步,但是对被检测到不可能存在共享数据竞争的锁进行消除。
锁消除是虚拟机自行判断的,开发人员,在编写代码的时候并不用刻意的去规避这些问题,因为有些同步措施都是Java本身自己实现的。
2、锁粗化
我们在编写代码的时候,一般会遵循一个原则,就是尽量将同步块的作用范围限制的小,只在共享数据的实际作用域中才进行同步,这样同步操作数量会变得更少,即使存锁竞争,等待锁的线程也能尽可能快地拿到锁。
但是实际情况,在一系列连续操作都对同一个对象反复加锁和解锁,甚至加锁操作时出现在循环体之中的,那即使没有线程竞争,频繁地进行互斥同步操作也会导致不必要的性能损耗。
3、轻量级锁
轻量级锁是相对于操作系统互斥量来实现的“重量级”锁而言的,但是轻量级锁并不用来替代重量级锁的,它是指在没有多线程竞争的前提下,减少重量级锁使用操作系统互斥量产生的性能消耗。
要理解轻量级锁,必须要对虚拟机对象的内存布局(尤其是对象头部分)。
4、偏向锁
偏向锁的意义:
偏向锁的目的是消除数据在无竞争情况下的同步原语,进一步提高程序的运行性能。
如果说轻量级锁是在无竞争的情况下使用CAS操作消除同步使用的互斥量,那偏向锁就是咋无竞争的情况下把整个同步都消除掉,连CAS操作都不去做了。
偏向锁的定义:
这个锁会偏向于一个获得它的线程,如果在接下来的执行过程中,该锁一直没有被其他线程获取,则持有偏向锁的线程将用于不需要在进行同步。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。