synchronized:对象锁,类锁;
对象锁:锁的是当前对象;
public class SynObject {
/**
* 这种写法表示使用synchronized关键锁住的是调用当前方法的SynObject类的对象
* 注意:是当前的对象
*/
public void synObject1() {
synchronized (this) {
System.out.println("");
}
}
/**
* 与synObject1()方法的意思一样
*/
public synchronized void synObject2() {
System.out.println("");
}
}
类锁:锁的是类或是所有类的所有对象;
public class SynClass {
/**
* 这种写法表示使用synchronized关键锁住的是调用当前方法的类,
* 也就是说凡是使用了当前了的对象,都会被锁住
*/
public synchronized static void synClass1() {
System.out.println("");
}
/**
* 与synClass1()方法的意思一样
*/
public synchronized static void synClass2() {
synchronized (SynDemo.class) {
System.out.println("");
}
}
}