synchronized关键字
1.原子性
2.可见性
理解
java早期版本中,synchronized属于重量级锁,效率底下,java的线程是映射到操作系统的原生线程之上的。
唤起和挂起,都需要原生系统帮忙完成。
java6之后java官方从jvm层面对synchronized较大的优化,如:自旋锁,适应性锁,偏向锁,轻量级锁等
作用不同地方
修饰实例方法:作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁
修饰静态方法:给当前类加锁
修饰代码块: 指定加锁对象,进入同步代码库前要获得给定对象的锁