synchronized 修饰在 static方法和非static方法的区别
2018-01-04 17:19
302 查看
Java中synchronized用在静态方法和非静态方法上面的区别
在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。那么,在static方法和非static方法前面加synchronized到底有什么不同呢?大家都知道,static的方法属于类方法,它属于这个Class(注意:这里的Class不是指Class的某个具体对象),那么static获取到的锁,是属于类的锁。而非static方法获取到的锁,是属于当前对象的锁。所以,他们之间不会产生互斥。
看代码:
运行结果是:
那当我们想让所有这个类下面的方法都同步的时候,也就是让所有这个类下面的静态方法和非静态方法共用同一把锁的时候,我们如何办呢?此时我们可以使用Lock。
在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。那么,在static方法和非static方法前面加synchronized到底有什么不同呢?大家都知道,static的方法属于类方法,它属于这个Class(注意:这里的Class不是指Class的某个具体对象),那么static获取到的锁,是属于类的锁。而非static方法获取到的锁,是属于当前对象的锁。所以,他们之间不会产生互斥。
看代码:
相关文章推荐
- synchronized 修饰在 static方法和非static方法的区别
- synchronized 修饰在 static方法和非static方法的区别
- Java中synchronized 修饰在static方法和非static方法的区别
- Java语言中synchronized 修饰在 static方法和 非static方法的区别
- 多线程下synchronized修饰static方法与非static方法的区别
- Java中synchronized 修饰在 static方法和 非static方法的区别
- 多线程下synchronized修饰static方法与非static方法的区别
- 多线程下synchronized修饰static方法与非static方法的区别
- Java中static修饰的方法和非static修饰的方法的区别
- synchronized 修饰在 static方法和 非static方法的区别
- Java语言中synchronized 修饰在 static方法和 非static方法的区别
- synchronized修饰static方法与非static方法的区别
- java多线程下synchronized修饰static方法与非static方法的区别
- Java多线程之Synchronized应用在static和非static方法上的区别
- synchronized修饰非static方法与修饰static方法的区别
- 【java】synchronized修饰静态方法和非静态方法的区别
- java中synchronized修饰的方法或代码块和static synchronized修饰方法或代码块的区别
- 抽象的(abstract)方法 是否可同时是 静态的(static),是否可同时是 本地方法(native),是否可同时被 synchronized修饰?
- static方法和非static方法的区别(java)
- 牛客网Java刷题知识点之同步方法和同步代码块的区别(用synchronized关键字修饰)