1.指定加锁对象:对给定对象加锁,进入同步块获取给定对象加锁的锁
2.直接作用于实例方法:相当于对当前实例加锁,进入同步代码前,要获得当前实例的锁
3.作用于静态方法:相当于当前类的锁,进入同步代码前,获得当前类的锁