tan8888 2009-06-26 16:15
浏览 205
已采纳

多线程读取数据库

我的需求很简单,我想从数据库读出url网页地址,读取过的不能再读,然后抓取网页源码,抓取完然后再存回去,url记录大约有十万

条,请问各位高手,我应该怎么样做呢?我的思路是开一个线程,读过的再把它一个字段如isReaded修改为1,再开几个线程去抓取。但问

题是:怎么样读取数据好呢,不能一下就读十万吧。读出来数据怎么放让另外的线程去读的?刚才试了下,一边读一边更新isReaded字

段,读取3000条时就报Network error IOException: Address already in use: connect 异常,也不知道是什么原因。还有怎么样才能做

到多线程插入数据
[b]问题补充:[/b]
谢谢两位的回答,还有几个疑问

to ranLoD: "一个标识对象,当入库的线程读取到标识对象的时候线程结束" 一个标识对象是什么意思,怎么样读取标识对象,能否写出几句简单的代码

to pwg17:"读取的线程读一批URL出来后,更新这批URL",怎么样做到呢,怎么控制数量,怎么更新呢,能否写出几句简单的代码
[b]问题补充:[/b]
因为还有程序不断往数据库里插入新数据,一开始读完十万可以,但还是有一个线程定时扫描数据吧?
[b]问题补充:[/b]
谢谢pwg17的一直回答。是的,是写一个爬虫。因为分析抓取时,是用别的语言写的,不保存在数据库里没法进行交互啊
[b]问题补充:[/b]
是的,我只是负责下载页面,其他分析不是我管。这几天看别人用C#写一个多线程抓取,感觉运行起来比Java快,C#有个HttpWebRequest组件封装挺好的,感觉比java的好用,不知是否理解正确。我也打算用hibernate试试,不知道多线程下hibernate有没有要注意的问题。分有点少,我是新人,多多理解啊。也谢谢各位的回答。

  • 写回答

6条回答 默认 最新

  • iteye_20452 2009-07-09 12:19
    关注

    嗯,我就是用C#的,HttpWebRequest是挺方便的。没有哪个语言写就快,看些代码的人而已。想快速的话,程序用多线程,然后再弄成分布式。感觉你们蜘蛛这里拆分成不同部分不同人负责,想快速的话,只能是看整体实现的怎样了。hibernate不是很熟悉,在蜘蛛这里用不是很适合,个人感觉,或者用Ibatis吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急