2.2.1 EndPoint 组件

上一篇讲到endPoint 启动的时候
创建了一个线程池createExecutor
启动了一个pollerThread
又启动了一个startAcceptorThreads
一个个慢慢看看

线程池到底干啥用的 一眼看不出来 往后放,先看那两个

pollerThread

源码如下

this.pollers = new NioEndpoint.Poller[this.getPollerThreadCount()];

            for(int i = 0; i < this.pollers.length; ++i) {
                this.pollers[i] = new NioEndpoint.Poller();
                Thread pollerThread = new Thread(this.pollers[i], this.getName() + "-ClientPoller-" + i);
                pollerThread.setPriority(this.threadPriority);
                pollerThread.setDaemon(true);
                pollerThread.start();
            }

第一句创建了一个poller数组
poller的逻辑太过复杂,先看下面这个

2.startAcceptorThreads

protected void startAcceptorThreads() {
        int count = this.getAcceptorThreadCount();
        this.acceptors = new ArrayList(count);

        for(int i = 0; i < count; ++i) {
            Acceptor<U> acceptor = new Acceptor(this);
            String threadName = this.getName() + "-Acceptor-" + i;
            acceptor.setThreadName(threadName);
            this.acceptors.add(acceptor);
            Thread t = new Thread(acceptor, threadName);
            t.setPriority(this.getAcceptorThreadPriority());
            t.setDaemon(this.getDaemon());
            t.start();
        }

    }

这里就新建了一个acceptor的数组,并启动了相关的线程
那么看看acceptor具体是什么
请看下篇【2.2.2 EndPoint Acceptor组件】
不过看下面分析之前,强烈建议先看看NIO部分

因为里面涉及到的
所有的socket selector poller 都和NIO有关
没有NIO的知识 看的会比较头晕,根本不知道发生了什么

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 2.2.1 EndPoint 组件