首页 > 解决方案 > 多用户 Java 应用程序如何真正工作

问题描述

我敢肯定,这个问题相当广泛,但我相信我并不完全了解多用户应用程序的工作原理,我想对这个主题进行一些澄清,或者想知道在哪里可以找到更多信息(不确定我知道要做什么)搜索)

我了解开发方面,但是一旦您将代码部署到服务器,它如何处理多个用户?例如,如果我有一个单例类,那么该类只会在服务器上实例化一次……但是该类需要被多个用户同时使用,这意味着类中的变量可能需要不同每个用户,这是如何在幕后实现的?

只是每个不同的用户将在不同的线程上访问该类的概念吗?如果是这样,这是否意味着整个应用程序需要是线程安全的?

标签: javamultithreading

解决方案


让我直接解释一下,并从这一点开始

将代码部署到服务器后,它如何处理多个用户?

---->是的,每个Web应用程序或企业应用程序都应该部署在服务器上,Web服务器上的Web应用程序就像tomcat企业应用程序一样WebSphere。每个服务器都会有多个线程的 servlet 容器(在 tomcat 中默认为 200)每个输入请求将由单独的线程处理(因此多个请求可以同时执行)

如果我有一个单例类,那么该类只会在服务器上实例化一次

---> 是的,单例类每个服务器只有一个实例,因此多个线程可以同时访问同一个对象,这可能会导致数据不一致,这是开发人员负责处理此职责的责任。单例类的主要问题是class (instance or static)使用 setter 方法的级别变量,因为两个线程可以同时访问同一个对象并更改值,在实时场景中,单例设计模式用于Connection Pool对象

注意局部变量在多线程中是最好的,因为每个线程都有自己的堆栈,并且它们不能被任何其他线程访问。

但是这个类需要被多个用户同时使用,这意味着类中的变量对于每个用户来说可能是不同的

---> 将请求属性保存到对象Models or POJO中会出现,这些是prototype为每个请求创建新对象。


推荐阅读