Synchronized:
解决多线程访问时,资源的同步性,可以保证⽅法、代码块在任意时刻只有⼀个线程执⾏。
三种使⽤⽅式:
修饰实例⽅法: 给对象实例加锁,进⼊同步代码前,要获得对象实例的锁
修饰静态⽅法: 给类加锁,作⽤于类的所有对象实例,
修饰代码块: 对指定代码块加锁,进⼊同步代码库前要获得 给定对象的锁。
synchronized底层实现原理
修饰同步语句块的实现使⽤的是 monitorenter 和 monitorexit 指令,其中
monitorenter 指令指向同步代码块的开始位置, monitorexit 指令则指明同步代码块的结束位置。
修饰⽅法使用的是ACC_SYNCHRONIZED 标识,该标识指明了该⽅法是⼀个同步⽅法。