自己打算用java写个多线程的爬虫,结果在存储爬取得到数据的时候遇到了难点我是打算把采集到的网页放在mysql数据中,然后问题来了假设我开启了50个线程,然后爬取得到的每一个网页存储到一个对象,然后把对象放入集合当中,之后当对象里面的容量满到1000就写入一次数据库。但是感觉这样会有点问题但是多个线程同时操作一个集合,怎么保证安全呢,不会出错吗或者大神们提供一点更好的思路,初学java,讲的详细点吧
2 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
楼上正解,或者把集合读写代码放在synchronized代码块里
...
synchronized (set) {
set.add(page);
}
...
synchronized (set) {
insertToDb(set);
set.clear();
}
...
添加回答
举报
0/150
提交
取消