[英]Static nested class thread safety - java
我在名為“MyClass”的類中有一個靜態的“Builder”類。 如果我嘗試從兩個線程同時使用構建器創建兩個MyClass實例,它會安全嗎? 可以將一個線程設置的值分配給另一個線程創建的對象嗎?
碼:
public class MyClass {
private int height;
private int weight;
private MyClass(Builder builder) {
height = builder.height;
weight = builder.weight;
}
public static class Builder {
private int height;
private int weight;
public Builder height(int h) {
height = h;
return this;
}
public Builder weight(int w) {
weight = w;
return this;
}
public MyClass build() {
return new MyClass(this);
}
}
}
如果我嘗試從兩個線程同時使用構建器創建兩個MyClass實例,它會安全嗎?
如果你的意思是在兩個線程中使用相同的Builder
實例,那么不,但如果每個線程都有自己的Builder
實例,那么你會沒事的。 有了這種模式:
MyClass c = new MyClass.Builder().height(10).weight(2).build();
每個Builder
實例都是單個線程的本地實例。
我看到你得到了答案。 只是添加它,當然構建器不是線程安全的。 在代碼的當前形狀中,更改為以下內容可能會如此
public static class Builder {
private volatile int height;
private volatile int weight;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.