我应该在多线程环境中使用对象池,单例还是静态方法?

Cri*_*ris 9 java singleton multithreading

我有一个辅助类,它创建了一些对象,比如构建器.助手类没有状态.它处于多线程环境中; 特别是,一个Web服务器.这个班级是单身人士的好人选吗?

将此类实现为单例并仅使用static方法有什么区别?

成千上万的用户访问这个对象/这些方法的效果是什么?

我可以使类成为常规类,但每次需要时实例化它都会浪费内存.

ruh*_*kus 1

这里不需要使用单例(因为不需要状态),可以使用静态方法。原则上,单例通过允许状态来提供更多的控制。您的情况不会有太大区别,但静态方法会更容易实现和使用。

  • 成千上万的用户访问该对象/这些方法会产生什么影响?同样,两种情况没有太大区别,但是在 Singleton 中你可以有一个状态,如果你不仔细实现,你的代码将是非线程安全的。每个调用静态方法的用户都会获得自己的方法“实例”(我认为这就是您所要求的),因此不会有遇到线程安全问题的风险。