我想知道在多线程应用程序中是否有经过批准的实践。我应该让每个线程有一个DAO,还是简单地让一个DAO成为线程安全的单例。
发布于 2010-01-05 02:04:51
这在很大程度上取决于您用于数据访问的机制。如果您有一个非常可伸缩的数据访问,并且有很多线程,那么使用某种形式的线程静态数据访问可能会很有优势。
如果您没有可伸缩的数据访问,您的提供程序不支持每个进程多个线程,或者您此时不需要可伸缩性,那么使用具有适当同步的单例会更简单、更容易实现。
对于大多数业务风格的应用程序,我个人认为单例方法更容易维护,而且可能更好-如果没有其他原因,那么它更容易进行有效的测试。多线程用于数据访问可能不是必需的,因为数据访问可能不会成为影响可用性的瓶颈(如果设计正确,并且批处理请求适当)。
发布于 2010-01-05 02:18:56
使用最适合您的应用程序架构的方法,除非:
1)您的数据访问对象的创建成本很高,在这种情况下,您应该倾向于使用线程安全的单例。
2)您的对象保持可变状态,就像在Active Record pattern中一样。(不变的DAO配置状态,如超时阈值,不计在内。)
https://stackoverflow.com/questions/2001073
复制相似问题