锁粗化

/ 多线程 / 没有评论 / 317浏览

我们在日常的多线程开发时,常常会把同步代码块的作用范围控制的尽量小,目的就是保证线程可以尽快的获得锁和释放锁,进而提高程序的运行效率。但是我们知道,线程在获取锁和释放锁时,是需要消耗一些系统资源的。如果程序频繁的获取锁和释放锁,那么势必会影响程序的运行效率。所以虚拟机为了解决出线的这种对程序性能的损耗, 程序在运行时虚拟机就会检查如果发现有一连串的操作都对同一个对象加锁,例如把加锁操作写在循环里,这时虚拟机就会把加锁的同步范围粗化到整个操作的外部,可以理解将讲同步代码块的范围添加到循环外,这样程序在运行时,只需要执行一次获取锁和释放锁的操作就可以了,从而提升程序的运行效率。