我在理解 Singleton 的使用时遇到了困难。据我所知,在使用单例模式时,一旦创建了一个类的一个实例并在所有用户之间共享。但是,对于同时使用该资源的多个用户(例如数千个用户)来说,这不会使应用程序变慢吗?
例如。如果我的服务类“Sendmail”之一是单例,那么只会在 IOC 容器中创建该类的一个实例。现在,该实例将与使用该资源的所有当前用户共享。现在,如果多个用户同时尝试发送电子邮件,则所有请求都将在队列中等待,因为只创建了一个 Sendmail 实例,这不会让用户等待发送电子邮件吗?这对于用户来说将是非常糟糕的体验。数据库连接也是如此。那为什么推荐使用Singleton而不是prototype呢?
请帮我解决我的困惑。 提前致谢。
最佳答案
不,单例模式不会减慢应用程序的速度。它基本上创建单个对象并使其在每次请求时可用。
但是当您考虑多个用户同时访问数据/资源时,这就是并发概念。如果您实现一些并发控制技术,那么数据/资源的处理可能会变慢。
注意:一切都取决于开发人员他/她编写的代码有多糟糕。
关于java - 如果多个用户同时处理它,使用单例模式是否会使我的应用程序变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55352844/