选择器

选择器允许单线程操作多个通道。如果你的程序中有大量的链接,同时每个链接的IO带宽不高的话,这个特性将 会非常有帮助。比如聊天服务器。 下面是一个单线程中Selector维护3个Channel的示意图: 

 

要使用Selector的话,我们必须把Channel注册到Selector上,然后就可以调用Selector的selectr()方法。这个 方法会进入阻塞,直到有一个channel的状态符合条件。当方法返回后,线程可以处理这些事件。 
 
 
  • 使用Selector的好处

使用更少的线程,减少了线程切换的损耗

注意:现代操作系统和CPU对多任务的处理已经很完善了,多线程的影响也越来越小,如果CPU是多核的,不执行多任务反倒是浪费了机器的性能。

  不过这些设计上的讨论是题外话了。

  • Selector使用演示
 
 
原文地址:https://www.cnblogs.com/sherrykid/p/6009386.html