Java NIO

来源:互联网 发布:java 读取压缩包文件 编辑:程序博客网 时间:2024/06/16 00:32

主要内容
Buffer
Channel
Selector

public static Selector open() throws IOException {
return SelectorProvider.provider().openSelector();
}
因为SelectorProvider本身为一个抽象类,通过调用provider()提供对应的Provider实现.

provider = sun.nio.ch.DefaultSelectorProvider.create();//以下是create()方法的源码

public static SelectorProvider  create() {       String osname = AccessController.doPrivileged(           new GetPropertyAction("os.name"));       if ("SunOS".equals(osname)) {            return new sun.nio.ch.DevPollSelectorProvider();        }        // use EPollSelectorProvider for Linux kernels >= 2.6        if ("Linux".equals(osname)) {            String osversion = AccessController.doPrivileged(                new GetPropertyAction("os.version"));            String[] vers = osversion.split("\\.", 0);            if (vers.length >= 2) {                try {                    int major = Integer.parseInt(vers[0]);                    int minor = Integer.parseInt(vers[1]);                    if (major > 2 || (major == 2 && minor >= 6)) {                        return new sun.nio.ch.EPollSelectorProvider();                    }                } catch (NumberFormatException x) {                    // format not recognized                }            }        }       return new sun.nio.ch.PollSelectorProvider();

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/nio/ch/DefaultSelectorProvider.java#DefaultSelectorProvider.create%28%29

0 0