1、synchronized(this) this代表当前对象,此写法阻塞所有需要获取当前对象锁的同步方法和同步代码块
2、synchronized(class) class代表当前类文件,会阻塞所有类的实例对象的同步方法和同步代码块,等同于 synchronized static方法
3、String对象常量池特性(jvm会缓存string对象,如果两个string对象的值一样,那么Java不会创建第二个对象并使其直接指向第一个对象的内存,导致两个对象指向同一片内存),所以synchronized(object),object最好避免使用string对象。