// 写法一
synchronized (this) {
// 线程安全代码逻辑
}
// 写法二
private Object lock = new Object();
public void method() {
synchronized (lock) {
// 线程安全代码逻辑
}
}
简单的线程锁一般有两种写法,它们本质上的区别是
synchronized(this)在多线程调用this这个对象时,锁粒度比较大,它会将所有synchronized方法都阻塞
synchronized(object)在多线程调用当前对象时,只阻塞同一个object对象的方法,而不是阻塞所有的synchronized方法,使用起来更加灵活