2、类锁
2.1、synchronized加在static方法上
Ps:不加 static,因为实例对象不一样,所以会导致并发运行。
Ps1:加 static,因为static代表类对象,所以把整个类对象锁住,所以只要是该类的实例对象,都会被锁住,实现同步运行【两个线程访问的是synchronized的静态方法】。
Ps2:有些人说可以加在run方法上吗?不行的。因为这里的run是接口的实现,所以通常做法是另外写一个静态方法,一举两得(达到类锁的作用也可以被执行在run方法里)。
2.2、synchronized(*.class)代码块
Ps:原因:因为实例对象不一样,所以可以并发运行,而且数据之间不会相互干扰。【两个线程访问的是两个对象的同步方法】。