JAVAEE---synchronized

synchronized的特性

乐观锁/悲观锁可自适

轻量级锁/重量级锁可自适

自旋锁/挂起等待锁可自适

非读写锁

可重入锁

非公平锁

synchronized的锁机制

锁升级

偏向锁阶段

当一个线程对一个对象进行加锁,这个对象处于未加锁状态时,会进行一个标记并未真正加锁。俗称“搞暧昧”。

轻量级锁阶段

当有其他锁进行加锁,偏向锁就会立马加锁,变为轻量级锁,其他加锁就会等待。等待这个使用的策略就是自旋锁。

重量级锁阶段

当锁竞争加剧,轻量级锁占用的cpu就过高,就会升级为重量级锁。这里的等待策略就是挂起等待锁。

锁消除

编译器在进行优化时会把一些没有必要加锁但代码加了锁的地方删除。但是这里的优化是比较保守的。

锁粗化

将细粒度的锁进行合并为一个粗粒度的锁,减少锁竞争带来的开销。

你可能感兴趣的:(java,开发语言,java-ee,多线程)