WEB开发网
开发学院软件开发Java nio框架中的多个Selector结构 阅读

nio框架中的多个Selector结构

 2009-10-08 00:00:00 来源:WEB开发网   
核心提示: 可以看到,默认的池大小是cpu个数+1,nio框架中的多个Selector结构(3),也就是创建了cpu+1个的Selector对象,它的重载构造函数里是创建了一个数组,Mina当有一个新连接建立的时候,就创建一个NioSocketSession,启动一个 CachedThreadPool来运行

可以看到,默认的池大小是cpu个数+1,也就是创建了cpu+1个的Selector对象。它的重载构造函数里是创建了一个数组,启动一个 CachedThreadPool来运行NioProcessor,通过反射创建具体的Processor对象,这里就不再列出了。

Mina当有一个新连接建立的时候,就创建一个NioSocketSession,并且传入上面的SimpleIoProcessorPool,当连接初始化的时候将Session加入SimpleIoProcessorPool:

    protected NioSession accept(IoProcessor<NioSession> processor,
            ServerSocketChannel handle) throws Exception {
        SelectionKey key = handle.keyFor(selector);
        
        if ((key == null) || (!key.isValid()) || (!key.isAcceptable()) ) {
            return null;
        }
        // accept the connection from the client
        SocketChannel ch = handle.accept();
        
        if (ch == null) {
            return null;
        }
        return new NioSocketSession(this, processor, ch);
    }
        
        private void processHandles(Iterator<H> handles) throws Exception {
            while (handles.hasNext()) {
                H handle = handles.next();
                handles.remove();
                // Associates a new created connection to a processor,
                // and get back a session
                T session = accept(processor, handle);
                
                if (session == null) {
                    break;
                }
                initSession(session, null, null);
                // add the session to the SocketIoProcessor
                session.getProcessor().add(session);
            }
        }

上一页  1 2 3 4 5 6  下一页

Tags:nio 框架 多个

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接