JAVA 多线程 访问网页

myloveyoyo1314 2010-06-01 03:00:04
小弟目前做了这样一个小东西

数据库里有一组数据 是车牌号+车牌类型的一万多条数据 车牌类型大部分为空
程序与要从数据中将车牌和车牌类型 拼上url 访问车辆违章公布网站
然后将网站的返回结果 取出写入数据库

现在问题是数据库中车牌号对应的类型太少了 而网站的类型比较多
那就需要尝试 车牌和所有类型拼成n多url然后依次访问该网站 取回结果 速度很慢

想用多线程 进行这个操作 可是多线程用得不太熟 哪位 有好的办法提高一下运行速度 或者告诉我一下 这个多线程要怎样写
...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mybeautiful 2010-06-01
  • 打赏
  • 举报
回复
1. 对每条数据的处理 起一个线程MainThread, 其中 有个 lock (Object lock=new Object();)
public void run(){
//...对每一个车型号new 一个新线程去生成url去处理 (新线程 待 后面说明)
//每个线程都要在存起来,如加入ArrayList.
sychronized(lock) {
lock.wait();
}
//有一个线程处理成功后(就是类型匹配对的那个),调用 lock.notify()

}
public void getLock();
2.执行线程
public void run(){
a.根据车牌号,类型,生成url, 请求车辆违章公布网站。
if(匹配成功,得到正确结果) {
保存数据库
MainThread.getLock().notify();
}
}

其它可能的异常,楼主再分析考虑下。
Mybeautiful 2010-06-01
  • 打赏
  • 举报
回复
什么 叫 "而网站的类型比较多" ?不是只有一个网站啊。
after80 2010-06-01
  • 打赏
  • 举报
回复
把你的处理类包装成一个线程类,然后用一个主线程去启动多个子线程就可以了。
怎样包装成线程类?继承Thread,把处理代码写到run方法里。
怎么启动子线程类?new一个线程类,再调用它的start方法。

建议:主线程类有一些同步的方法,比如子线程可以调用该方法来得到新的车牌号;比如子线程得到结果后调用该方法将结果保存到数据库。
Java技术栈 2010-06-01
  • 打赏
  • 举报
回复
这个不需要用到多线程的。。

用缓存或批量插入

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧