java - 多用户 Java 应用程序如何真正工作
问题描述
我敢肯定,这个问题相当广泛,但我相信我并不完全了解多用户应用程序的工作原理,我想对这个主题进行一些澄清,或者想知道在哪里可以找到更多信息(不确定我知道要做什么)搜索)
我了解开发方面,但是一旦您将代码部署到服务器,它如何处理多个用户?例如,如果我有一个单例类,那么该类只会在服务器上实例化一次……但是该类需要被多个用户同时使用,这意味着类中的变量可能需要不同每个用户,这是如何在幕后实现的?
只是每个不同的用户将在不同的线程上访问该类的概念吗?如果是这样,这是否意味着整个应用程序需要是线程安全的?
解决方案
让我直接解释一下,并从这一点开始
将代码部署到服务器后,它如何处理多个用户?
---->是的,每个Web应用程序或企业应用程序都应该部署在服务器上,Web服务器上的Web应用程序就像tomcat
企业应用程序一样WebSphere
。每个服务器都会有多个线程的 servlet 容器(在 tomcat 中默认为 200)每个输入请求将由单独的线程处理(因此多个请求可以同时执行)
如果我有一个单例类,那么该类只会在服务器上实例化一次
---> 是的,单例类每个服务器只有一个实例,因此多个线程可以同时访问同一个对象,这可能会导致数据不一致,这是开发人员负责处理此职责的责任。单例类的主要问题是class (instance or static)
使用 setter 方法的级别变量,因为两个线程可以同时访问同一个对象并更改值,在实时场景中,单例设计模式用于Connection Pool
对象
注意局部变量在多线程中是最好的,因为每个线程都有自己的堆栈,并且它们不能被任何其他线程访问。
但是这个类需要被多个用户同时使用,这意味着类中的变量对于每个用户来说可能是不同的
---> 将请求属性保存到对象Models or POJO
中会出现,这些是prototype
为每个请求创建新对象。
推荐阅读
- javascript - 将 Excel 文件上传到服务器,编码问题
- android - 如果 compileSdkVersion 和 targetSdkVersion 都是 21,我是否需要担心新的 startScan()/getScanResults() 限制?
- reactjs - 如何使用带有 CSS 模块的 Webpack 4 摇树移除未使用的类?
- r - 在R中将数组随机划分为相等的子(多于两个)数组
- rotation - 使用处理“镜像”一个 PShape 对象(旋转/平移问题)
- python - 启动Excel时如何使用openpyxl使Excel工作表中的所有列折叠全部隐藏或显示?
- c++ - 如何转发为共享内存声明自定义 unique_ptr
- python - 从 API 获取的字符串中的奇怪字符无法解码
- .htaccess - .htaccess RewriteRule 保留 url 参数
- azure - 允许第 3 方客户端 Web 应用程序(不是用户)以及我自己的 Web 客户端应用程序访问我的 Web api 的最佳方式是什么?