一、synchronized有两种用法
1、加在方法上
public synchronized void method1() {
}
2、写synchronized代码块
public void method2() {
synchronized (this){
}
}
二、synchronized分为对象锁和类锁
1、(一)里面的两个例子都是对象锁
2、方法的类锁在方法上加static,用处不大
3、代码块的类锁
public class TapoServiceImpl{
public static void method3() {
synchronized (TapoServiceImpl.class){
}
}
}
这种限制比较大(对类的静态变量可以用这种方法,且要是静态方法)
4、最佳用法
public class TapoServiceImpl{
public static final String PL_DAYS = "11";
public void method4() {
synchronized (PL_DAYS){
}
}
}
经测试,spring框架下这种方式是唯一没有误差的。(上面的其他方法用的有限制)