我正在开发一个用mongoDB与mongoDB java驱动程序连接的Java应用程序。首先,我与JDBC类似地创建了mongoDB连接类。这意味着在一个查询应用程序中创建了新连接并在关闭后。在每个查询中,我都会创建新的MongoClient。关闭之后。 但是很久以前在Mongo的记录中我读到了
MongoClient实例实际上表示与数据库的连接池;即使有多个线程,你也只需要MongoClient类的一个实例。
MongoClient.close()来清理资源
我正在使用servlet。这就是为什么我有多个线程(在每个线程中我创建新的MongoClient)。
如果我更改代码或者这些方法之间没有太大区别,谁能解释我?
答案 0 :(得分:1)
该文档明确指出Mongo客户端是线程安全的,实际上是一个连接池。
您应该只创建一个Mongo客户端并在servlet中重用。
线程池初始化是一项密集型操作,因此您不应多次创建它们。