java - Spring的Singleton作用域bean在Web应用程序中的表现如何?

标签 java spring multithreading performance javabeans

在检查代码时,我发现所有bean在Web应用程序中均被定义为单例。这让我开始思考,当多个线程尝试访问此bean时会发生什么。它不会降低性能吗?例如,我有一个singleton登录bean,现在假设有多个用户尝试登录。现在,由于Bean为单例,因此所有用户都将获得相同的Bean,这不会降低性能吗?还是还有别的东西?

最佳答案

您的问题带有答案的暗示,因为您谈到线程,通常,线程不是“ Activity 的”代码。作为一个比喻,线程是通过读取共享代码而处于“ Activity ”和“执行”状态的线程。 Threads sharing code您可能会认为代码是在白板上书写的,并且线程正在执行读取代码的工作。

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

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

关于java - Spring的Singleton作用域bean在Web应用程序中的表现如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48847878/

相关文章:

Python time.time() 在并发程序中的可靠性

java - SpringMVC自定义集合编辑器不将数据返回到Jsp

python - SQLAlchemy未将Python池线程识别为单独的进程

java - 如何在 ""中使用 .properties 文件值 ""?

java - 将图像与实体一起保存在数据库中

java - 如何在 Spring 创建一个新 session ?

java - JMX - Pivotal Cloud Foundry

c++ - 如何将结果从std::thread传回给Qt中的Gui主线程?

Java ResultSet.getString() 用于日期字段显示 00 :00:00. 0

java - 如何为 future 的版本控制建模你的发布/订阅主题名称