Java synchronized 对象锁和类锁的区别

1.1 synchronized加到static方法是对整个类加锁

 public synchronized static void doLongTimeTaskA() {
       System.out.println("name = " + Thread.currentThread().getName() + ", begain");
       try {
           Thread.sleep(1000);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }

       System.out.println("name = " + Thread.currentThread().getName() + ", end");
   }

1.2 synchronized加到普通方法是对这个类对象加锁

public synchronized void doLongTimeTaskC() {

       System.out.println("name = " + Thread.currentThread().getName() + ", begain");
       try {
           Thread.sleep(1000);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }

       System.out.println("name = " + Thread.currentThread().getName() + ", end");

   }

1.3 synchronized加到普通方法是对特定对象上加锁

public void hello() {
  synchronized(lock) {
     pint("hello")
  }
}

猜你喜欢

转载自blog.csdn.net/ai_xiangjuan/article/details/80261295