目录
synchronized 和 volatile 的区别是什么?
synchronized 和 ReentrantLock 区别是什么?
ThreadLocal 是什么?有哪些使用场景?
ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副 本,而不会影响其它线程所对应的副本。
synchronized 底层实现原理?
synchronized 是由一对 monitorenter/monitorexit 指令实现的,monitor 对象是同步的基本实现单
元。在 Java 6 之前,monitor 的实现完全是依靠操作系统内部的互斥锁,因为需要进行用户态到内核态的切换,所以同步操作是一个无差别的重量级操作,性能也很低。但在 Java 6 的时候,Java 虚拟机提供了三种不同的 monitor 实现,也就是常说的三种不同的锁:偏向锁 (Biased Locking)、轻量级锁和重量级锁,大大改进了其性能。