为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

aluckdog 2018-10-05 14:23:34
自己打算用java写个多线程的爬虫,结果在存储爬取得到数据的时候遇到了难点我是打算把采集到的网页放在mysql数据中,然后问题来了假设我开启了50个线程,然后爬取得到的每一个网页存储到一个对象,然后把对象放入集合当中,之后当对象里面的容量满到1000就写入一次数据库。但是感觉这样会有点问题但是多个线程同时操作一个集合,怎么保证安全呢,不会出错吗或者大神们提供一点更好的思路,初学java,讲的详细点吧
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

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

查看完整回答
反对 回复 2018-10-14
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

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

...

synchronized (set) {

  set.add(page);

}

...

synchronized (set) {

  insertToDb(set);

  set.clear();

}

...


查看完整回答
反对 回复 2018-10-14
  • 2 回答
  • 0 关注
  • 1060 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信