Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring的单例范围bean在web应用程序中的行为如何?_Java_Spring_Multithreading_Performance_Javabeans - Fatal编程技术网

Java spring的单例范围bean在web应用程序中的行为如何?

Java spring的单例范围bean在web应用程序中的行为如何?,java,spring,multithreading,performance,javabeans,Java,Spring,Multithreading,Performance,Javabeans,在查看代码时,我发现在web应用程序中,所有bean都被定义为单例。这让我想到当多个线程试图访问这个bean时会发生什么。它不会降低性能吗?例如,我有一个单例登录bean,现在假设有多个用户尝试登录。现在,由于bean是单例的,那么所有用户都将得到相同的bean。这不会降低性能吗?或者还有其他问题吗?您的问题有答案的暗示,因为您谈到线程,一般来说,代码不是“活动的”,线程是。作为一个隐喻,线程是通过读取共享代码而“活动”和“执行”的线程,共享代码就在那里。你可以把代码想象成写在白板上,线程正在读

在查看代码时,我发现在web应用程序中,所有bean都被定义为单例。这让我想到当多个线程试图访问这个bean时会发生什么。它不会降低性能吗?例如,我有一个单例登录bean,现在假设有多个用户尝试登录。现在,由于bean是单例的,那么所有用户都将得到相同的bean。这不会降低性能吗?或者还有其他问题吗?

您的问题有答案的暗示,因为您谈到线程,一般来说,代码不是“活动的”,线程是。作为一个隐喻,线程是通过读取共享代码而“活动”和“执行”的线程,共享代码就在那里。你可以把代码想象成写在白板上,线程正在读代码

如果共享bean有一些线程需要更改的状态(比如变量),则情况就不同了。扩展这个比喻,这就像是写在白板上的一个数字,每个人都要大声改变它


现在,需要某种方法来确保线程不会覆盖彼此的工作。因此,需要某种类型的同步。单个bean(实际上是其中的可更新状态)成为线程竞争的资源,一个bean可能需要等待另一个bean完成。这可能会降低性能。如果做得不好,也会导致错误和死锁。

这必须由程序员注意。因为Spring提供了不同的作用域来定义bean的创建。更多关于spring的范围


为bean实现单例作用域的方式不同于单例设计模式。每个spring容器只有一个bean。更多关于spring容器的信息。

不是bean完成了工作,而是CPU完成了工作。如果有什么不同的话,它将使事情更快,因为它更有效地使用cpu内存缓存。然而,你的问题过于宽泛/模糊,“或者还有其他问题吗”-请看下面的例子;StackOverflow不是一个讨论论坛,而是一个明确和具体问题的场所。为什么您认为它会降低性能?您似乎认为一次只有一个线程可以使用bean。你为什么这么想?我的意思是,你没有使方法同步,是吗?