下面是代码的一部分:
class Test {
private static final Map<String, Class> urlHandlers = new ConcurrentHashMap<String, Class>();
static {
urlHandlers.put(urlRegexA, HandlerA.class);
urlHandlers.put(urlRegexB, HandlerB.class);
...
}
public Handler handle(String url) {
......
if(url match urlRegex) {
Class claz = urlHandlers.get(urlRegex);
//in multi-thread environment, is it thread-safe?
return claz.newInstance();
}
}
}我想知道Class.newInstance()是否是线程安全的?有人知道这个吗?
发布于 2014-01-21 08:51:25
The javadoc states
类被实例化,就好像是由带有空参数列表的
new表达式实例化的一样。
所以它等同于做
new YourClass();所以这完全取决于你的YourClass构造函数是否是线程安全的。
发布于 2014-01-21 09:00:16
是的,只要构造函数不对对象的静态内容做任何非线程安全的事情,这就是线程安全的。
https://stackoverflow.com/questions/21247117
复制相似问题