簡體   English   中英

對於Java,Class.newInstance()線程安全嗎

[英]for Java, is Class.newInstance() thread safe

像這樣的一部分代碼:

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()是否線程安全嗎? 有人知道嗎?

Javadoc狀態

就像通過帶有空參數列表的new表達式實例化該類。

所以這等效於

new YourClass();

因此,這完全取決於YourClass構造函數是否是線程安全的。

是的,只要構造函數對對象的靜態內容不執行任何非線程安全的操作,這是線程安全的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM