我想知道是否有一个多线程应用程序批准的做法。我应该每个线程都有一个DAO,或者只需将一个DAO作为一个线程安全的单例。每个线程或线程安全DAO有一个DAO?
5
A
回答
4
这真的取决于你使用的数据访问机制很多。如果你有一个非常可伸缩的数据访问和大量的线程,使用某种形式的线程静态数据访问可能是有利的。
如果您没有可扩展的数据访问权限,您的提供程序不支持每个进程的多个线程,或者您不需要此时的可伸缩性,那么使用具有适当同步的单例更简单,更易于实现。
对于大多数商务风格的应用程序,我个人认为单的做法是更容易维护,可能会更好 - 如果没有其他原因,而不是它是非常非常容易有效地进行测试。拥有多个数据访问线程可能不是必需的,因为数据访问可能不会成为影响可用性的瓶颈(如果设计正确,并且批量请求适当)。
0
使用最适合你的应用程序架构,办法,除非:
1)数据访问对象是昂贵的创建,在这种情况下,你应该向着一个线程安全的单瘦。
2)你的对象保持可变的状态,如Active Record pattern。 (不可变的DAO配置状态,如超时阈值,不计。)
相关问题
- 1. 线程安全休眠DAO层
- 2. DAO模式多线程
- 3. HtmlUnit:每个线程一个WebClient - 线程安全吗?
- 4. MVC中的单个DAO或多个DAO?
- 5. 从另一个DAO调用一个DAO?
- 6. log4j在多线程环境中。每个线程一个Appender或每个线程一个Logger或...?
- 7. 只有一个线程正在写入时的线程安全
- 8. bitset个别位线程安全为每个线程写入在一次?
- 9. 每个数据库连接一个DAO?
- 10. java线程安全:线程安全吗?
- 11. 一个表DAO vs多表DAO
- 12. 使用线程安全或非线程安全的PHP?
- 13. 多个DAO jdbctemplate构造函数注入多线程风险?
- 14. 从两个线程使用相同的服务和DAO
- 15. 每个线程一个SQLiteConnection?
- 16. 在另一个DAO中使用DAO调用 - DAO依赖关系
- 17. 做一个LinkedRingBuffer线程安全
- 18. 创建一个非线程安全shared_ptr
- 19. 线程安全:JFrame和另一个类
- 20. 如何以线程安全的方式缓存DAO中的信息
- 21. 从另一个线程加载数据,线程安全吗?
- 22. 每每个线程
- 23. 多线程写入,一个线程从队列中读取,线程安全
- 24. 线程安全
- 25. 线程安全
- 26. 线程安全
- 27. 线程安全
- 28. 线程安全
- 29. 线程安全
- 30. 线程安全
吾道的,实际上是连接到两个来源:通过RPC的SimpleDB和PHP API。我的猜测是我应该使用DAO每线程约100个线程来避免瓶颈问题。在这种情况下你有没有看到任何明显的原因? – pondermatic 2010-01-05 00:12:18
可能更好地使DAO成为单例,并且在内部只是异步工作。然后可以根据需要使用ThreadPool进行扩展......这对于PHP API尤其如此,因为Web请求非常异步地工作,并且大多数Web框架对此有很好的支持...... – 2010-01-05 00:41:59