1、同步代码块的理解
public void test01(){
Synchronized(this){
//共享代码
}
}
上文中的this指代进入此代码块的线程对象,如果线程Thread1首先进到同步代码块后,会将同步代码块中的代码全部锁住,当线程Thread2也进到此处,线程Thread2只能处于等待状态,需要等到线程Thread1执行完同步代码后才能够进入。
这样的话,该方式比同步方法public synchronized void fun(){}更优越,因为,后者锁住了方法中所有的代码。
2、类同步的理解
public void test02(){
Synchronized(xx.class){
//共享代码
}
}
同步的是类对象,在不同线程中,只要是这个类的对象都会同步等待。