多用户Java应用程序如何真正工作

时间:2018-11-13 19:45:17

标签: java multithreading

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

,但是该类将需要同时被多个用户使用,这意味着该类中的变量对于每个用户而言都可能有所不同

--->要将请求属性保存到对象Models or POJO中,将显示为prototype,表示将为每个请求创建新对象。