synchronized锁升级

JDK1.6时synchronized锁有:

偏向锁:在一段时间只有一个线程使用锁,此时就可以使用偏向锁,第一次获取到锁需要CAS操作,之后要再次获取锁,只需要在获取锁时判断当前线程id是否为已经获取锁的线程id,不需要CAS操作,提高了性能。

轻量级锁:多个线程交替持有锁,但是没有发生竞争,此时就是轻量级锁,每次获取锁都是一个CAS操作,保证原子性。

重量级锁:当出现竞争,锁就升级为重量级锁,当线程没有获取到锁会进入阻塞状态,重量级锁涉及到用户态和内核态的切换以及线程上下文切换,所以性能比较低。

posted @ 2023-05-28 21:31  程序员_YHB  阅读(26)  评论(0)    收藏  举报