synchronized(this)与synchronized(class)的区别
2016-08-08 20:32
706 查看
首先this 和class 分别是两把不同的锁,不会存在class被获取,this就要等的现象。
synchronized加在一个类的普通方法上,那么相当于synchronized(this)
如果synchronized加载一个类的静态方法上,那么相当于synchronized(Class对象)。
4. synchronized(this)
- 锁住的是对象,当两个线程使用同一个A的实例a里的同步方法时【如线程1调用a.method1 (),线程2调用a.method2()或者调用a.method1()】,会出现同步的现象,即两个线程里的这两个方法不能同时执行;
- 如果这两个线程分别new了不同的A的实例,然后用不同的实例分别调用method1 ()和method2(),不会出现同步的问题。
5. synchronized(class)
- 锁住的是class,即使不同的线程创建了A类的不同实例,分别调用同步方法,也会存在同步现象,当然用同一个实例调用同步方法,更会出现同步现象。
synchronized加在一个类的普通方法上,那么相当于synchronized(this)
如果synchronized加载一个类的静态方法上,那么相当于synchronized(Class对象)。
4. synchronized(this)
- 锁住的是对象,当两个线程使用同一个A的实例a里的同步方法时【如线程1调用a.method1 (),线程2调用a.method2()或者调用a.method1()】,会出现同步的现象,即两个线程里的这两个方法不能同时执行;
- 如果这两个线程分别new了不同的A的实例,然后用不同的实例分别调用method1 ()和method2(),不会出现同步的问题。
5. synchronized(class)
- 锁住的是class,即使不同的线程创建了A类的不同实例,分别调用同步方法,也会存在同步现象,当然用同一个实例调用同步方法,更会出现同步现象。
相关文章推荐
- java-测试synchronized使用xxx.class和this使用的区别
- synchronized(this)、synchronized(class)与synchronized(Object)的区别
- synchronized(this) 和synchronized(xxx.class)的区别和联系
- synchronized(this) 与synchronized(class) 之间的区别
- synchronized(this)、synchronized(class)与synchronized(Object)的区别
- java synchronized关键字this与this.Class的区别
- synchronized(class)、synchronized(this)与synchronized(object)的区别分析
- synchronized(this)与synchronized(class)区别
- 新手向-同步关键字synchronized对this、class、object、方法的区别
- Java中Synchronized(this)和Synchronized(class)的区别
- synchronized(class) 与 synchronized(this)区别
- Android中this.*与*.this还有*.class的区别是什么?
- Android中this.*与*.this还有*.class的区别是什么?
- synchronized(this)与synchronized(class)
- this.class.getResource 、this.classLoader.getResource 和ClassLoader.systemResource的区别
- 线程-synchronized方法和同步块的作用范围;synchronized(this)和synchronized(obj)的区别
- synchronized(class)、synchronized(this)与synchronized(object)
- java的synchronized(参数),参数是this对象和参数是非this对象的区别
- synchronized(class)、synchronized(this)与synchronized(object)
- synchronized(this)与synchronized(class)