关于synchronized关键字可以方的位置

img

Runable重写的run方法为什么不能存放 synchronized关键字呢?请小伙伴替我解答这个疑惑

修饰普通方法,锁住的是当前对象的实例

修饰静态方法,锁住的是当前Class对象

修饰代码块,锁住的是括号里的对象
多个线程锁住的都是不同的对象,加了和没加一样

在方法上加synchronized等同于synchronized(this),虽然看似给run()方法加上了锁,三个线程都拿到各自对象的锁,因此都能够执行run()中的代码。要解决这个问题其中一个方法是通过runnable接口来实现线程