gpt4 book ai didi

java - 如何保护一种方法免受不同请求的影响

转载 作者:行者123 更新时间:2023-11-30 00:07:06 25 4
gpt4 key购买 nike

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

此函数在我的应用程序中执行关键任务,因此,我希望我的应用程序中的这些部分之一可以访问它(我的意思是所有 3 个部分,不能同时调用它)

我做了这样的功能:

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

synchronized是否保证同一时间只有一个请求(来自不同的类)可以执行该函数的代码?

因为我在我的应用程序中从不同的 Activity 中调用这个函数,并且在我调用这个函数的每个地方我都会创建一个类 A 的新对象。

最佳答案

does synchronized protect my function?

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

I will make a new object of class A

因此,您将拥有不同的实例,并且您的锁将处于实例级别。因此,假设您创建了类 A 的两个实例。因此,两个线程可以分别处理这两个对象。

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

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

关于java - 如何保护一种方法免受不同请求的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48774450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com