呵呵,CSDN里的朋友们真实在,没有分的题目基本上不回.
同样的问题因为没有给分到现在一直没有人帮忙解答.只能删掉重开有分的贴.
(呵呵,刚注册没太多的分,还请大家不要觉得少)
Selector selector = Selector.open();

Selector selector = SelectorProvider.provider().openSelecotr();
请问一下大家这两者的区别.

解决方案 »

  1.   

    public abstract class Selector extends ObjectSelectableChannel 对象的多路复用器。 可通过调用此类的 open 方法创建选择器,该方法将使用系统的默认选择器提供程序创建新的选择器。也可通过调用自定义选择器提供程序的 openSelector 方法来创建选择器。通过选择器的 close 方法关闭选择器之前,它一直保持打开状态。
    public abstract class SelectorProviderextends Object用于选择器和可选择通道的服务提供程序类。 选择器提供程序是此类的一个具体子类,它具有零参数的构造方法,并实现了以下指定的抽象方法。给定的对 Java 虚拟机的调用维护了单个系统级的默认提供程序实例,它由 provider 方法返回。第一次调用该方法将查找以下指定的默认提供程序。
    系统级的默认提供程序由 DatagramChannel、Pipe、Selector、ServerSocketChannel 和 SocketChannel 类的静态 open 方法使用。System.inheritedChannel() 方法也使用它。除了默认提供程序之外,程序还可以使用其他提供程序,方法是通过实例化一个提供程序,然后直接调用此类中定义的 open 方法。   
    openSelector() 
              打开一个选择器。API上面都有的
      

  2.   

    看看Selector.open()的實現:public static Selector open() throws IOException 
    {
    return SelectorProvider.provider().openSelector();
    }這樣還有什麼區別?:)
      

  3.   

    我也看过了API哦,只是看完后不理解而已,因为刚开始学用NIO.
    这两种方法都是打开一个选择器,我运行后感觉没什么区别.
    我只是想问一下大家两者的区别而已,什么情况下用谁更合适.
      

  4.   

    zhuokai() 
    如果调用Selector open() 方法,返回的却是SelectorProvider.provider().openSelector();
    仅仅因为一个是静态的,一个是抽象的?
      

  5.   

    zhuokai()    谢了!     
    现在明白了.