大厂面试题——synchronized关键字的用法?
synchronized关键字是解决线程安全问题的方式之一。共有两种用法:
1、同步代码块
语法格式:
synchronized(锁对象){
需要加锁的代码
}
注意锁:
(1)任意类型的对象都可以当做锁
(2)多个线程之间共用一把锁,即多个线程之间共用同一个锁对象
(3)同步代码块的范围:不能太大,太小
2、同步方法
语法结构:
synchronized 【修饰符】 返回值类型 方法名(【形参列表】)【抛出异常列表】
同步方法的锁对象:
静态方法:当前类的Class对象,即当前类名.class
非静态方法:当前对象this(需要谨慎,确保是同一个this)