首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Tomcat NIO(1)-开篇

Tomcat 服务器(tomcat7以上)默认使用 java NIO 模型,NIO 不仅仅需要 java 语言上的支持,同时还离不开各种操作系统对于多路复用的支持(linux,windows,mac等等...对于异步 IO 是 tomcat AIO 的实现,不在这里介绍,不过目前基本都是使用tomcat NIO ,几乎很少选择使用 AIO 。...在语言层面,tomcat 实现了一系列 java class 来对 NIO 进行支持,同时也有自己的一套 NIO 模型来配合相关的 class 来运转。...另外也对异步 servlet 和长连接有所支持,所以本系列文章中包含如下知识点的介绍: NIO 基础之多路复用 Tomcat IO 关键类 Tomcat NIO 模型 Acceptor 线程 Poller...线程 Tomcat IO 线程读写数据 Block Poller 线程 Tomcat 长连接 Tomcat 异步支持 目前先写到这里,下一篇文章里我们继续介绍 NIO 基础之多路复用。

63420

Tomcat NIO(16)-文件上传

在上一篇文章中我们主要介绍了 tomcat nio 中的长连接,包括长连接开启和关闭的条件,每个长连接可以复用的请求数目等等,在这里我们介绍 tomcat 对文件上传的支持。...文件上传的本质 对于 tomcat 上传文件来说,其本质是把文件上传到 tomcat 工作目录中,通过getPart() 等 API 得到的 inputstream 已经是上传在工作目录中磁盘中文件的输入流了...工作目录中的 Tomcat/{FQDN}/{Context} 。...文件上传的本质是把文件写到 tomcat 工作目录的磁盘中,由 getPart() 相关 API 得到磁盘中文件的大小,文件名,输入流等信息,然后根据业务逻辑进行操作。...当然如果是默认配置,路径在 tomcat 工作目录下,是不需要过多担心权限问题的。但是如果配置了其他路径,就需要考虑权限问题。

87140

Tomcat NIO(20)-异步任务运行

在上一篇文章中我们主要介绍 tomcat nio 中异步的开启,主要包括以下的总结: 开启异步的时候不会执行 start 事件函数的,因为此时构造的异步上下文对象的源码中并没有设置事件监听器(可能 tomcat...一直调用到 SocketWrapperBase 对象实例的 execute() 方法,这里我们分析 execute() 核心方法: 上述方法首先通过 endpoint.getExecutor() 调用得到 tomcat...将异步任务委托到 tomcat io 线程池中运行。 细心的你就会发现,在 tomcat 原生异步实现的 API 中,任务是占用了 io 线程的。...所以综上总结对于 tomcat 异步原生 API 实现中, AsyncContext.start() 方法会把异步任务交由 tomcat io 线程池运行,这样在大量启动异步任务的时候可能会过度占用 io...目前先写到这里,下一篇文章里我们继续介绍 tomcat io 中的异步结束。

68220

Tomcat NIO(17)-流式上传文件

在上一篇文章中我们主要介绍 tomcat nio 中对文件上传的原生支持,其本质是通过调用消费 servlet inputstream 相关 API ,先把文件上传到 tomcat 的工作目录中。...这种上传方式需要考虑 tomcat 工作目录磁盘空间大小,清理,权限等问题,由于涉及网络设备,磁盘设备,os 内核空间和程序的用户空间多次切换,所以在数量比较大的情况下会有效率问题。...对于原生上传来说,是把 http 请求的文件输入流写入 tomcat 工作目录的磁盘中,流式上传的思路是不把输入流写入磁盘,而是直接把输入流交给应用程序,这样就避免了写磁盘的中转操作,提高了效率。...避免了和磁盘设备打交道,提高了效率,同时也不必考虑 tomcat 工作目录磁盘大小,权限,清空等问题。...目前先写到这里,下一篇文章里我们继续介绍 tomcat 中的 server sent event(SSE) 。

82420

Tomcat NIO(2)-epoll多路复用

tomcat 服务器(tomcat7以上)默认使用 java NIO 模型,NIO 不仅仅需要 java 语言上的支持,同时还离不开各种操作系统对于多路复用的支持(linux,windows,mac 等等...),所以 tomcatNIO 是建立在操作系统基础之上的。...epoll 是 event poll 的简称,在 linux 内核版本 2.6 开始支持,所以如果你的 tomcat 服务器如果希望默认使用 NIO,除了自己版本在 tomcat7 以上之外,还需要部署在...对于户空间线程我们一般称之为事件轮询线程,tomcat NIO 中一般叫 poller thread 。...只是这个时候一定有数据可读,不必等待过长的时间,所以 tomcat NIO 是同步非阻塞 IO。 目前先写到这里,下一篇文章里我们继续介绍 tomcat NIO 中主要涉及的类和这些类的作用。

2.3K41
领券