【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
各位大牛你们好,最近在学习java web,有一个问题想请教一下大家,tomcat是具有并行性的,也就是多线程处理用户的请求,可以同时处理多个用户的请求。那么我就有一个疑惑了,是不是每次接受用户的请求tomcat都会创建一个处理用户的请求相关的servlet对象呢?举个例子说:在同一时刻有两个用户发出相同的请求,这时tomcat是不是就会创建两个相同的 servlet对象去处理请求呢????还是说不管同一时刻有多个请求,tomcat的servlet(处理用户请求的这个servlet)对象只有一个,多个线程需要去抢占这个servlet资源呢?这两种处理机制哪种是正确的呢?还是说都不是。麻烦各位朋友帮我解答一下。在这里先谢谢大家。好人一生平安。。
servlet是单例的,你研究这个建议你去看一看tomcat怎么使用的nio、bio、aio,tomcat默认是使用bio模型的,你可以了解一下java的这三个模型,http://stevex.blog.51cto.com/4300375/1284437
bio模型即同步阻塞,所以每个请求会产生一个线程,但serlet设计成无状态的对象就不会存在并发问题了,你那个多线程抢占servlet资源,好好去看一下java的多线程,去理解一下多线程。比如在内存中有一个内存所有线程都要访问、使用、修改等等