美文网首页
Android锁机制汇总

Android锁机制汇总

作者: 假装门口当前台 | 来源:发表于2021-03-12 17:34 被阅读0次

多线程开发中,经常会使用到锁,常见的有

  1. synchronized, 普通函数
    class Test {
        synchronized public void test1() {
            Log.i("tag", "test1");
        }
        synchronized public void test2() {
            Log.i("tag", "test2");
        }
    }

这种属于对象锁,只能对同一对象才起作用

    void test() {
        Test test = new Test();
        test.test1();
        test.test2();
    }

这样使用会有作用,但是如果是不同对象,那就不生效

    void test() {
        Test test = new Test();
        test.test1();
        Test test1 = new Test();
        test1.test2();
    }

静态方法使用,这种是属于类锁,跟对象不同的是,不同对象使用也会起作用

    synchronized static public void test1() {
        Log.i("tag", "test1");
    }
    synchronized static public void test2() {
        Log.i("tag", "test2");
    }

代码块的使用,可以是对象锁也可以是类锁,看看传入的是什么

    void test() {
        synchronized (this) {
            test();
        }
    }

这种是对象锁,只有当前this这个对象才起作用

    void test() {
        synchronized (Test.class) {
            test();
        }
    }

这种就直接锁住整个类,即使不同对象也是会被加锁

相关文章

网友评论

      本文标题:Android锁机制汇总

      本文链接:https://www.haomeiwen.com/subject/eerrqltx.html