1,当给普通方法加锁的时候(用synchronized修饰),锁的是当前的对象,线程不可同时访问同一个对象中所有的synchronized修饰的方法及代码块。但非同步方法和代码块可以被访问。
2. 当用synchronized修饰静态方法的时候,因为静态方法是属于类的,所以,锁的是类的所有对象,线程不可同时访问该类的所有对象中的synchronized修饰的方法及代码块,只能串行化访问。
3.当使用synchronized(this){ }修饰代码块的时候锁的是当前对象,线程不可同时访问同一个对象中所有的synchronized修饰的方法及代码块。但非同步方法和代码块可以被访问。
4.当使用synchronized(class){ }修饰的时候,锁的是当前类的所有对象,线程不可同时访问该类的所有对象中的synchronized修饰的方法及代码块,只能串行化访问。
5.不能使用synchronized关键字修饰。构造方法也不能使用synchronized关键字,但是可以使用synchronized修饰代码块来同步。
内容参考于:https://sawyersun.github.io/2016/10/18/Java-synchronized/
浙公网安备 33010602011771号