那个 Selector 在我们处理事件时能让我们最多保存一个”附件“,虽然是一个位置,但我们可以放上Map , Set ,对吧,你想放什么都不是问题,另外既然你用了 NIO 就不需要这样记住这个 channel 了,因为它已经在有其它方法直接找出这应的 channel 了,你多观察一下这些变量对应的类(在 Eclipse 中的 outline 大纲视图中可以看到所有方法名),就是说本身 API 在你连接成功后有办法让你知道当前是跟哪个客户端在通话,至少你用了像登录名这种逻辑意义上的标记的话,用那个”附件“就是不错误的方法,这个”附件“会在你期望的事件发生时被返回来还给你。
selector = Selector.open();
SelectionKey key = channel.register(selector, getInterestOptions());
key.attach("myLoginName");
String loginName = key.attachment();