我想通过静态工厂方法获取一个对象,比如
Person p = Person.fromName("Jack");
class Person {
public static Person fromName(String name){
return new Person(name);
}
}
但是fromName()方法不是线程安全的,(fromName()只是一个例子,这种方法在我的程序中运行时会报错)但是,如果synchronize这个方法效率很低,因为多个线程应该调用这个方法并发。有什么修复建议吗?
最佳答案
如果您的代码在多个线程中并发执行是不安全的,但您想从多个线程中调用它,听起来您实际上只有两个选择:
- 让它成为线程安全的
- 利用同步化序列化调用
您没有提供任何信息来表明哪一个最适合您的情况。 (您是否测量过同步的性能影响?您是否尝试使其成为线程安全的?)
关于Java:静态工厂方法和线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9904633/