一个selector维护着三个selectKey集合:
①key set:包含着所有的selectionKeys,所有通过register注册到selector的channel返回的SelectionKey都在这个集合里面,可以用select.keys()方法获得。
②selected-key set:在key集合中的selectionKey所关注的事件发生后,该selectionKey会被自动加入selected-key集合中,此集合中的事件需要处理,可以用select.selectedKeys()方法获得。该集合是key的子集。
③cancelled-key set:包含着被取消的selectionKey,但是关联的channel没有撤销,此集合不能直接获得。且该集合也是key set的子集。
注意 :selected-key的集合中都是发生的事件,处理后需要删除,但只是删除了selected-key中这个selectionKey,该selectionKey在key集合中还存在,当这个selectionKey关注的事件发生后,还会再次加入到selected-key集合中。
博客介绍了selector维护的三个selectKey集合。key set包含所有注册到selector的channel返回的SelectionKey;selected-key set是key集合中关注事件发生后的SelectionKey集合,处理后需删除;cancelled-key set包含被取消的SelectionKey。selected-key集合处理后删除不影响key集合。
259

被折叠的 条评论
为什么被折叠?



