2.5.1 成员属性
2.5.2 配置接口
方法 | 说明 |
---|---|
public AioQuickServer setBannerEnabled(boolean bannerEnabled) | 服务启动时是否打印smart-socket banner |
public AioQuickServer setThreadNum(int num) | Server服务线程数 |
public AioQuickServer setReadBufferSize(int size) | 设置AioSession读缓存区长度 |
public AioQuickServer setOption(SocketOption socketOption, V value) | 设置Socket的TCP参数配置 |
2.5.3.1 start:启动AIO服务端
初始化AIO服务的工作线程组并赋值于成员属性
如果调用bind(SocketAddress local)方法,AsynchronousServerSocketChannel内部实际上执行的是bind(SocketAddress local, 0)。然而backlog的值小于1时,JDK会将其默认设置为50。 backlog维护了连接请求队列长度,如果队列满时收到连接指示,则拒绝该连接。举个例子:backlog设置为50,当前有50连接请求过来,服务端还未执行这些连接请求的accept方法。此时再有一个连接请求过来,则会被拒绝连接。除非请求队列中的某个连接完成accept操作并释放出队列资源,服务器才可接受新的连接。
smart-socket通过启动AcceptThread线程同步监听客户端连接请求,一旦客户端连接上来便生成异步任务由WorkerThread线程池来初始化AioSession。所有的AioSession共用aioReadCompletionHandler、aioWriteCompletionHandler对象,这样可以减少服务端产生的对象数。
AIO服务停止的逻辑很简单,关闭Channel通道,停止线程组。