2011-12-09 56 views
3

Netty的JavaDocs解釋ChannelLocal與ThreadLocal類似,但是我對它的用法有一些疑問。 ThreadLocal是一個靜態類,具有訪問特定於實例的對象的靜態方法。 ChannelLocal不是靜態的,有靜態內部映射或者有靜態方法。該文檔不包含訪問ChannelLocal或將對象放入ChannelLocal的示例,所以我希望有人能夠讓我深入瞭解它的用法。Netty的ChannelLocal的用法

謝謝!

回答

4

ChannelLocal用於分配一些數據到一個通道。

下面是一個例子:

// Declare 
public static final ChannelLocal<Integer> data = new ChannelLocal<Integer>(); 

// Set 
data.set(e.getChannel(), 1); 

// Get 
int a = data.get(e.getChannel()); 

這裏有一對夫婦的現實生活的例子:

+0

有趣。好的,謝謝使用示例,我知道該從哪裏出發! –

+0

我很好奇爲什麼ChannelLocal內部地圖也不是一成不變的: ' 私人最終ConcurrentMap 地圖= 新ConcurrentIdentityWeakKeyHashMap (); ' 如果我在兩個獨立的類中使用ChannelLocal,我需要在這些類之間重新註冊我的ChannelLocal對象。有一個內部靜態映射會更有意義,所以如果我將一個類放在ChannelLocal中,我可以從另一個類中獲取同一個對象,而無需繞過ChannelLocal。 –

+0

不確定我自己。您可能想要問開發者論壇:http://groups.google.com/group/netty。我知道在最新的netty master(即將發佈的netty 4.0版本)中,討論了貶低ChannelLocal並在頻道上提供getAttachment/setAttachment。 https://github.com/netty/netty/issues/101 – Veebs