H5W3
当前位置:H5W3 > 其他技术问题 > 正文

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

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

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

回答:

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

回答:

楼上正解,或者把集合读写代码放在synchronized代码块里

...
synchronized (set) {
  set.add(page);
}
...
synchronized (set) {
  insertToDb(set);
  set.clear();
}
...

本文地址:H5W3 » java 爬虫多线程读取同一个集合

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址