synchronized修饰非静态方法,同步代码快的synchronized (this)用法和synchronized (非this)的用法锁的是对象,线程想要执行对应同步代码,需要获得对象锁
synchronized修饰静态方法以及同步代码块的synchronized (类.class)用法锁的是类,线程想要执行对应同步代码,需要获得类锁。
两个线程访问同一个对象中的同步方法一定是线程安全的,两个线程竞争同一对象锁,出现同步
一个类里面有两个非静态同步方法,如果对象实例A,线程1获得了对象A的对象锁,那么其他线程就不能进入需要获得对象实例A的对象锁才能访问的同步代码
静态方法一定会同步,非静态的必须在单例模式下才生效,但是也不能都用静态同步方法,总之用的不好,会给性能带来极大的影响。