java 爬虫多线程读取同一个集合

自己打算用java写个多线程的爬虫,结果在存储爬取得到数据的时候遇到了难点
我是打算把采集到的网页放在mysql数据中,然后问题来了
假设我开启了50个线程,然后爬取得到的每一个网页存储到一个对象,然后把对象放入集合当中,之后当对象里面的容量满到1000就写入一次数据库。但是感觉这样会有点问题

但是多个线程同时操作一个集合,怎么保证安全呢,不会出错吗
或者大神们提供一点更好的思路,初学java,讲的详细点吧


aluckdog
浏览 1112回答 2
2回答

慕田峪4524236

用Collections.synchronizedSet把你的集合变成线程安全的

守着星空守着你

楼上正解,或者把集合读写代码放在synchronized代码块里...synchronized (set) {  set.add(page);}...synchronized (set) {  insertToDb(set);  set.clear();}...
打开App,查看更多内容
随时随地看视频慕课网APP