本帖最后由 123_yaya 于 2014-6-8 11:09 编辑
详细解释在代码里,希望能帮到楼主。- public class Demon {
- //1.静态方法同步函数
- public static synchronized void method1(){
-
- }
- //2.非静态方法同步
- public synchronized void method2(){
-
- }
-
- //3.这个方法可以等价与静态方法同步函数,即静态方法同步函数省略了锁为Demon.class的静态代码块,因为静态方法是被类本身调用的,而每个类初始化的时候加载了class字节码,所以锁是Demon.class
- public void method3(){
- synchronized(Demon.class){
-
- }
- }
- //4这个方法可以等价为非静态方法同步函数,也就是非静态方法底层的实现原理
- //注意这个时候,静态代码块的锁就是this,因为函数需要被对象调用,那么函数都有一个所属对象引用,所以用this。
- public void method4(){
- synchronized(this){
-
- }
- }
- //最后重要的一点是,需要同步的一般是多线程的情况,并且涉及到操作共享数据。
- }
复制代码 |