如何保护一个方法不同的请求

时间:2018-02-13 19:43:36

标签: java android multithreading synchronization

我在A类中有一个函数。我从我的应用程序的3个部分(在不同的活动中)调用此函数。

此功能在我的应用程序中执行关键任务,因此,我希望它只能在我的应用程序中的其中一个部分访问(我的意思是所有3个部分,不能同时调用它)< / p>

我做了这样的功能:

   AnyType foobar(...) {
    synchronized(this) {
        doSomething();
    }
}

synchronized确保当时只有一个请求(来自不同的类)可以执行函数的代码吗?

因为我在我的应用程序中的不同活动中调用了这个函数,并且在我称之为函数的每个地方,我将创建一个A类的新对象。

1 个答案:

答案 0 :(得分:1)

  

同步保护我的功能吗?

这是对象级同步,只允许一个线程在this对象上执行任务。

  

我将创建一个A类的新对象

因此,您将拥有不同的实例,并且您的锁将位于实例级别。因此,假设您创建了两个A类实例。因此,两个线程可以在这两个对象上单独工作。

您应该avoid using synchronization on this object,而应该创建一个对象并锁定它。在您的情况下,它更可能使用类级别锁定(静态)。

AnyType foobar(...) {
    synchronized(A.class) {
        doSomething();
    }
}