每个请求到tomcat服务器,他都会开一个线程,那么如果某个用户请求进来后,做了一个操作A,这个操作要很长时间才能执行完,所以代码中对其进行了处理,即new了一个线程出来,让线程去执行。现在我想问的是new 出来的这个线程和tomcat服务器的线程有没有关系,也就是说本来tomcat线程池中最多只能连接五百个请求,现在有200个人进来了,那么还剩三百个,两百个人同时执行了该操作A,是不是意味着tomcat只剩下100个线程可以用了
每个请求到tomcat服务器,他都会开一个线程,那么如果某个用户请求进来后,做了一个操作A,这个操作要很长时间才能执行完,所以代码中对其进行了处理,即new了一个线程出来,让线程去执行。现在我想问的是new 出来的这个线程和tomcat服务器的线程有没有关系,也就是说本来tomcat线程池中最多只能连接五百个请求,现在有200个人进来了,那么还剩三百个,两百个人同时执行了该操作A,是不是意味着tomcat只剩下100个线程可以用了
收起
tomcat中的线程池excutor主要负责请求的处理,而代码中使用的异步线程池是自己自定义的,并不是我们配置的excutor线程,两者是没有关系的
tomcat的线程设计是由accept -> poller -> exec 这3个线程池进行流转的. 我们写的controller代码会执行再exec线程里.
如果用户连接请求很多, 有可能会因为acceptQueue满了导致520响应,
也有可能进入到exec线程池里, 但这个线程池是阻塞无界队列, 所以有可能为请求超时.
不一样,但是能不能起500个线程,跟机器性能有关。
报告相同问题?