使用java 写一个文件服务器
开放一个文件上传接口,使用IO读写完成文件上传保存到服务器
那么问题来了,用户访问http请求的时候service会单独为客户创建一条线程,那么A上传文件预计花30秒钟,这个时候B用户也提交了一个文件,此时B用户还能不能被服务器处理请求???
如果是简单的单线程模型是会有这种问题。但是现在成熟流行的框架 一般是这样设计:将网络IO处理逻辑和事件handler分开。比如java中netty框架,Netty 抽象出两组线程池,BossGroup 专门负责接收客 户端连接,WorkerGroup 专门负责网络读写操作。另外还有个处理消息的NioEventLoop 框架。每个NioEventLoop自带一个seletor网络处理和一个事件处理队列taskQueue。NioEventLoop 内部采用串行化设计,从消息的读取->解码->处理->编码->发送,始终由 IO线程 NioEventLoop 负责。