一、锁的类型

对象锁 :synchronized(xx.class) 、修饰静态方法

类锁 : synchronized(this) 、修饰普通方法

二、修饰对象

1、修饰普通方法

  1. public synchronized void fun(){
  2. }

2、修饰静态方法

  1. public synchronized static void fun(){
  2. }

3、修饰代码块

  1. // 注意this 表示当前对象
  2. public void fun(){
  3. try {
  4. // synchronized(xxx.class)
  5. synchronized (this) {
  6. System.out.println("Method 2 execute");
  7. Thread.sleep(1000);
  8. }
  9. } catch (InterruptedException e) {
  10. e.printStackTrace();
  11. }
  12. }

参考

1、Java并发编程:Synchronized及其实现原理
2、Java 并发编程:核心理论