java - 如果多个用户同时处理它,使用单例模式是否会使我的应用程序变慢

标签 java spring-boot singleton prototype

我在理解 Singleton 的使用时遇到了困难。据我所知,在使用单例模式时,一旦创建了一个类的一个实例并在所有用户之间共享。但是,对于同时使用该资源的多个用户(例如数千个用户)来说,这不会使应用程序变慢吗?

例如。如果我的服务类“Sendmail”之一是单例,那么只会在 IOC 容器中创建该类的一个实例。现在,该实例将与使用该资源的所有当前用户共享。现在,如果多个用户同时尝试发送电子邮件,则所有请求都将在队列中等待,因为只创建了一个 Sendmail 实例,这不会让用户等待发送电子邮件吗?这对于用户来说将是非常糟糕的体验。数据库连接也是如此。那为什么推荐使用Singleton而不是prototype呢?

请帮我解决我的困惑。 提前致谢。

最佳答案

不,单例模式不会减慢应用程序的速度。它基本上创建单个对象并使其在每次请求时可用。

但是当您考虑多个用户同时访问数据/资源时,这就是并发概念。如果您实现一些并发控制技术,那么数据/资源的处理可能会变慢。

注意:一切都取决于开发人员他/她编写的代码有多糟糕。

关于java - 如果多个用户同时处理它,使用单例模式是否会使我的应用程序变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55352844/

相关文章:

spring-boot - 在 Spring Boot 中生成 YAML 格式响应

scala - val 或 object 表示不可变的最终单例对象

java - 为什么我的小代码更改不会在应用引擎 (GAE/GWT) 中生效? (onModuleLoad() 没有发生?!)

java - Eclipse:创建包含一个类+依赖项的 jar

java - 在 DecimalFormat 上设置 RoundingMode 时出现问题

java - Spring Boot 请求 : to "re-run your application with ' debug' enabled"- how do I?

Spring Boot 线程池指标

java joptionpane 几秒钟后自动关闭

java - Swing 应用程序一致性检查中的 session 管理

java - java中的单例