首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于Java,Class.newInstance()是线程安全的吗

对于Java,Class.newInstance()是线程安全的吗
EN

Stack Overflow用户
提问于 2014-01-21 08:49:04
回答 2查看 887关注 0票数 0

下面是代码的一部分:

代码语言:javascript
复制
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()是否是线程安全的?有人知道这个吗?

EN

回答 2

Stack Overflow用户

发布于 2014-01-21 08:51:25

The javadoc states

类被实例化,就好像是由带有空参数列表的new表达式实例化的一样。

所以它等同于做

代码语言:javascript
复制
new YourClass();

所以这完全取决于你的YourClass构造函数是否是线程安全的。

票数 7
EN

Stack Overflow用户

发布于 2014-01-21 09:00:16

是的,只要构造函数不对对象的静态内容做任何非线程安全的事情,这就是线程安全的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21247117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档