Android中synchronized关键字用法

       首先,synchronized是java中表示同步代码快的关键字,当用来修饰一个方法或者代码块的时候,能保证同一时刻最多只有一个线程在调用该方法。

      当对代码块加锁时,synchonized(object)要比直接在方法名前加synchonized关键字效率高一些。

      调用sychonized method()的对象会获取该对象中所有synchonized的锁,使得其他线程不能访问所有加了synchonized前缀的方法(不仅仅只是当前运行的方法),影响了其他线程多其他同步方法的访问,降低了效率。而用synchonized 修饰代码块 只会对当前代码块加锁,其他的同步方法不受影响。

下面是一段简单的例子,供大家参考:

public class SyncDemoTest {

private static StringTAG =”SyncDemoTest”;

//等价于方法function2

public synchronized void function1(String b){

Log.e(TAG,”锁方法 1 “+b);

}

public void function2(String b){

    synchronized (this) {

        Log.e(TAG,”锁方法 2 “+b);

    }

}

//等价于方法function4

 public synchronized static void function3(String b){

       Log.e(TAG,”锁方法 3 “+b);

}

public static void function4(String b) {

    synchronized (SyncDemoTest.class) {

            Log.e(TAG,”锁方法 4 “+b);

    }

}

}

    原文作者:寒江楓雨
    原文地址: https://www.jianshu.com/p/67f690c65da5
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞