引言
- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
我们的应用程序在操作系统中是以一个进程的方式运行的,然后我们用户的请求是用线程方式处理的,以我实际的Web开发为例,线程的创建和启动是不需要手动去执行的,但我们的Web确实是多线程进行的,实际上是Tomcat帮我们干了这一切,那它和操作系统又是怎么联系的呢?我们简单聊一下它们之间的关系。
mvc经典三层
我们的用户请求来了之后,Tomcat为每一个用户请求创建一个线程,然后去找我们URL路径对应的Controller,然后Contorller调用Service,Service调用Dao,完成数据的存储和逻辑处理,返回结果给我们的客户。
javaWeb运行架构
那Tomcat也是应用啊,是应用就是以进程的方式存在,那我们的Tomcat是基于JVM的环境运行的,而JVM又被操作系统当成一个进程管理,真正干活的是我们的cpu和内存,操作系统把cpu和内存的资源进行分时和分片处理,虚拟出一个环境让JVM进程运行。
我们重新梳理一下:我们的应用程序是一个个War包,交给Tomcat,Tomcat又依赖于JVM,JVM又离不开操作系统,操作系统是和硬件打交道的,我们的硬件才是最终干活的。
多线程
我们的cpu在多个线程之间进行高速切换,那会带来什么样的问题?又是如何解决的,我们下节接着聊。