锁住的内容
锁代码块
对多个线程使用的多个此类A的代码加锁,即使多个线程多个对象也 会只有一个线程进入到此代码块,与对象个数,线程个数无关。
实现方式
(1)类代码块 public void a(){ synchronized(A.class){} }
(2)静态lock对象 static Lock lock=new ReetrantLock();
(3)静态方法 public synchronized static void xx(){}
锁对象
对多个线程使用的同一个类A对象加锁,与线程个数无关,多个线程中必须使用同一个类A对象,才会同步线程。
实现方式
(1)对象代码块 public void a() synchronized(this){} }
(2)非静态方法 public synchronized void xx(){}
(3) 非静态lock对象 Lock lock=new ReetrantLock()
Synchronized 锁
1、synchronized加在非静态方法前和synchronized(this)都是锁住了这