sha*_*fax 2 java multithreading builder
我在名为"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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试从两个线程同时使用构建器创建两个MyClass实例,它会安全吗?
如果你的意思是在两个线程中使用相同的实例,Builder那么不,但如果每个线程都有自己的实例,Builder那么你就没事了.有了这种模式:
MyClass c = new MyClass.Builder().height(10).weight(2).build();
Run Code Online (Sandbox Code Playgroud)
每个Builder实例都是单个线程的本地实例.
| 归档时间: |
|
| 查看次数: |
1916 次 |
| 最近记录: |