synchronized锁分为两种:
1,第一种为给方法添加synchronized,或者代码块例如
public synchronized void add(){
i = i++;
}
public void add(){
synchronized(this){
i = i++
}
}
这两种锁的模式是一样的,都是对象锁,当创建两个不同的对象,对象之间不会产生互斥,属于两把锁,当同一个对象访问,会产生互斥
3,第二种为类锁,例如
public static synchronized void add(){
i = i++;
}
//或者
public void add(){
synchronized(xxx.class){
i = i++
}
}
此方法为静态方法,给静态方法添加锁属于类锁,创建不同的对象访问,都会产生互斥,属于同步执行
网友评论