synchronized加锁对象和JVM对锁的优化

synchronized加锁对象

对于普通同步方法,锁是调用该方法的对象。
对于静态同步方法,锁是该方法所属类的Class对象。
对于同步代码块,锁是synchronized括号里面的对象。

JVM对锁的优化

偏向锁

如果一个线程获得锁,那么锁就进入偏向模式。当这个线程再次请求锁时,不执行同步操作。

轻量级锁

如果偏向锁失败,采用轻量级锁:对象头部作为指针,指向线程堆栈的内部,判断当前线程是否持有对象锁。如果线程获得轻量级锁,则进入临界区;否则,锁请求膨胀为重量级锁。

自旋锁

当前线程执行几个空循环。

锁消除

逃逸分析即观察某个变量是否会逃出某个作用域,消除不可能竞争共享资源的锁。

posted on 2023-01-22 16:05  王景迁  阅读(33)  评论(0编辑  收藏  举报

导航