1.首先 我们浏览器,服务器(java网络编程),线程指令是网络IO指令,cpu执行网络IO指令,网线接口是系统资源被此线程占用,IO通道有2个,并且
为什么tomcat能做为 运行项目的 组件
2.数据包 通过网线发送到 tomcat服务器一端网线接口,tomcat此时主线程,从线程池中 取一个线程,并执行线程中的 网络IO指令,开启两条IO通道,一条用于接收处在网线接口的数据包,然后将数据包 用解析器 解析出来,封装到 request和response中,然后关闭接收数据的通道,然后调用 servlet(request,response作为传参)并执行,然后 从另一个通道写数据,写完后关闭通道,然后线程 在线程池中变为就绪态并没有指令,等待下次再次分配指令执行,从这一步可以看出,不管是 发送端 执行网络IO指令,开启两条通道,发数据,还是 tomcat执行网络IO指令,开启IO通道,都是2个IO通道
3.tomcat之所以能运行项目,就是因为能 开启两条IO通道,接收数据包,发送数据包
4.tomcat的,IO指令是,阻塞IO指令,即线程在 执行IO指令的时候,线程是阻塞状态的,不能获得 cpu执行权
5.而 netty 也可以开启两条通道,接收数据包,发送数据包,但是 与 tomcat不同的是,netty的 IO指令是,非阻塞IO,它是基于IO多路复用技术(例如Reactor模式)实现,只需要一个线程或者少量线程,就可以处理大量请求。从性能上来说NIO实现的服务器并发性一般大于BIO,所以可以实现高性能的服务器