我在A类中有一个函数。我从我的应用程序的3个部分(在不同的活动中)调用此函数。
此功能在我的应用程序中执行关键任务,因此,我希望它只能在我的应用程序中的其中一个部分访问(我的意思是所有3个部分,不能同时调用它)< / p>
我做了这样的功能:
AnyType foobar(...) {
synchronized(this) {
doSomething();
}
}
synchronized
确保当时只有一个请求(来自不同的类)可以执行函数的代码吗?
因为我在我的应用程序中的不同活动中调用了这个函数,并且在我称之为函数的每个地方,我将创建一个A类的新对象。
答案 0 :(得分:1)
同步保护我的功能吗?
这是对象级同步,只允许一个线程在this
对象上执行任务。
我将创建一个A类的新对象
因此,您将拥有不同的实例,并且您的锁将位于实例级别。因此,假设您创建了两个A类实例。因此,两个线程可以在这两个对象上单独工作。
您应该avoid using synchronization on this
object,而应该创建一个对象并锁定它。在您的情况下,它更可能使用类级别锁定(静态)。
AnyType foobar(...) {
synchronized(A.class) {
doSomething();
}
}