gpt4 book ai didi

java - 方法级单例实例线程安全吗?

转载 作者:行者123 更新时间:2023-11-29 09:55:45 24 4
gpt4 key购买 nike

线程下面对obj的操作是否安全?我知道方法级变量和实例在每个线程的堆栈上 - 但我不确定当局部变量是单例时会发生什么。 foo() 在网络服务调用中被调用。我很好奇这是否是线程安全的?

public void foo() {
SomeObject obj = getSomeObject();
obj.doSomething(); // Would this be thread safe?
}

private SomeObject getSomeObject() {
// returns singleton
SpringContext.getBean("someObject");
}

class SomeObject {
int x;
...

// Not synchronized
public void doSomething() {

}
}

最佳答案

这取决于你所说的“线程安全”是什么意思。如果 SomeObject.doSomething() 以不安全的方式改变实例,那么不,它不安全。两个不同的线程可以获得对同一对象的引用。

基本上,除非 SomeObject 被设计为同时从多个线程使用,否则您不应该将其设为单例。

关于java - 方法级单例实例线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12287478/

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