gpt4 book ai didi

java - 创建新对象线程安全吗

转载 作者:搜寻专家 更新时间:2023-11-01 03:38:06 29 4
gpt4 key购买 nike

Java 中以下代码中的方法 getCopyOf 是线程安全的吗?我不确定对象的构造是否是原子操作。

public class SomeClass {
private final String arg1;
private final String arg2;

public SomeClass(String arg1, String arg2){
this.arg1= arg1;
this.arg2 = arg2;
}

public SomeClass getCopyOf() {
return new SomeClass(this.arg1,this.arg2);
}

public String getArg1(){
return arg1;
}

public String getArg2(){
return arg2;
}
}

最佳答案

在您的示例中,是的,String 是不可变的且不可访问,那么您的构造函数将是线程安全的。

但是,如果您将字符串替换为任意对象(比如另一个类)并为这些对象设置了 setter ,那么您可能会遇到有关线程安全的问题。因此,在对您的问题的更笼统的回答中,不,构造函数与任何其他方法一样,不提供明确的线程安全机制,由您来确保您的操作是线程安全的。

更糟糕的是,如果您的类包含静态字段,那么构造函数本身可能会出现线程安全问题。

关于java - 创建新对象线程安全吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23832091/

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