java
virgilli
这个作者很懒,什么都没留下…
展开
-
从源码解读tomcat的bio和nio
Bio为阻塞式的socket读写,Worker线程组接收socket任务后,便分配一个线程处理该连接,直至处理完成(给客户端response)。两大模块及功能图示如下nio为非阻塞读写,图示如下简要总结如下: bio下的Acceptor接收客户端连接后直接包装成任务提交给Worker线程组,而nio下的Acceptor是包装socket为PollerEvent后添加到Poller的event队列 Nio模式下,1个socket每次有读写事件都会提交给Work...原创 2021-06-15 23:49:32 · 271 阅读 · 3 评论 -
tomcat java nio是如何关联同一客户socket的多次请求消息的
使用命令行telnet和Mac上的一个tcp通信软件socket debugger,对tomcat8.5的nio模式做了源代码调试,解开了之前自己关于nio模式的一个疑惑:nio模式下tcp通信是非阻塞的,即客户端有信息发往tomcat,对该信息处理完毕后,tomcat便回收工作线程;待tomcat接收到客户端新的消息时,会再次分配工作线程处理客户端消息——那么同一个客户端先后发送的消息是怎么关联到一起的?比如客户端发送了一个post请求如下POST /greet HTTP/1.1Host: l原创 2021-05-19 11:08:58 · 288 阅读 · 1 评论 -
java的ThreadLocal简介和示例
EditJava中的ThreadLocal这个类的名字乍看容易让人误解,其实应该叫做ThreadLocalVaraiableKey,这个类的实例是作为key将对应的value存储在当前线程,value才是真正有用的信息。请注意,ThreadLocal对象仅仅是作为线程共享变量map里面的key来使用,其本身并不存储相关信息。一些安全框架如apache shiro和spring secu原创 2014-11-30 22:11:56 · 857 阅读 · 0 评论