我正在尝试使用mongodb作为数据库开发一个java项目。 我有2个方法(线程,没有线程)
//myMongoHelper, for connection
//mydbhelper, threaded insertion
myMongoHelper m = new myMongoHelper("localhost",27017,"mydb","mycoll");
int id=100;
Thread t = new Thread(new mydbhelper(new BasicDBObject()));
while(id>0){
t.start();
t = new Thread(new mydbhelper(new BasicDBObject()));
id--;
}
t.join();
m.myclose();
和
int id =100;
mongoClient = new MongoClient("localhost" , 27017 );
DBCollection coll = mongoClient.getDB( "mydb" ).getCollection("mycoll");
while(id>0){
coll.insert(new BasicDBObject());
id--;
}
mongoClient.close();
$ mongod shell在执行代码时显示 XX连接现已打开,默认情况下会在java执行结束时终止所有连接。
所以我想知道,
请改进我的代码。
答案 0 :(得分:0)
我将一起回答所有这些问题,每个新连接都需要大量资源才能进行初始化,因此请尽量保持这些资源。
不是为每个线程创建新连接,而是使用单个连接并分发您的查询!你可以用这种方式分发你的查询!您也可以使用批量插入来插入大量文档。
DBCollection coll = mongoClient.getDB( "mydb" ).getCollection("mycoll");
ArrayList<BasicDBObject> dbos = new ArrayList<BasicDBObject>();
while(id>0){
dbs.add(new BasicDBObject());
id--;
}
coll.insert(dbos);