2012-01-10 167 views
2

我注意到Netty有一些內部的Concurrent HashMap實用程序。我很好奇爲什麼Netty不使用內置於Java Core中的ConcurrentHashMap。 Netty實施是否以某種方式更好,還是具有一些新功能?我正在研究一個需要Concurrent HashMap的項目,我正在辯論是否應該使用netty實現,但是我看不到源代碼中的任何區別。爲什麼netty有自己的ConcurrentHashMap?

+1

閱讀文檔,或者如果你很勇敢,可以深入瞭解源代碼。 – mre 2012-01-10 16:38:35

+6

netty可能在某些時候支持Java 1.4,但它並沒有被刪除。 – 2012-01-10 16:41:23

+0

你指的是哪些工具? – skaffman 2012-01-10 17:01:33

回答

5

ConcurrentHashMap直到JSR-166纔出現,它在Java 5中作爲java.util.concurrent包發佈。

Netty不包括他們自己的ConcurrentHashMap,因爲它的優越性 - 實際上,它當然只是JSR-166的一個副本 - 所以它們可以在Java 1.4上運行。

你自己的項目,你應該只使用java.util.concurrent.ConcurrentHashMap,如果你可以採取Java 5的依賴,如果你不能,那麼你應該包括在您的產品(和更改包名稱,以便它不不會與Java 5運行時包含的項目發生衝突。)任何時候,您都可以讓Doug Lea或Brian Goetz爲您編寫線程安全代碼。

+0

非常感謝!這非常合理。我查看了Netty的ConcurrentHashMap的源代碼,我看不出有什麼不同,但我想確保我沒有錯過任何東西。 – 2012-01-12 15:10:43

相關問題