java多线程下载图片,求救

jay_kuku 2008-10-07 07:37:45
用多个子线程从网页下载图片,用到httpclient包
主要代码如下:
//从url地址下载图片到电脑目录
public void saveToFile(String destUrl,String pathName)
{
HttpClient client = new HttpClient();
GetMethod get = new GetMethod(destUrl);
try
{
client.executeMethod(get);
File storeFile = new File(pathName);
FileOutputStream output = new FileOutputStream(storeFile);
//得到网络资源的字节数组,并写入文件
output.write(get.getResponseBody());
output.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
程序流程:
thread1 run()
{
获取所有图片地址;
for(1...n)
{
对每一个地址,新建一个新的子线程用于保存文件;
}
.....
}
thread2 run()
{
savaToFile(..,..);
}
例如一个网页上有n张图片,首先新建一个线程thread1进行获取每个图片地址,然后在这个线程里创建n个子线程,每个子线程都是执行saveToFile函数的操作,用于保存图片文件。
问题是:当我不用多线程保存图片文件时,也就是一张一张的下载,下载下来的图片数量是正确的,而用多线程下载的图片数量却少了一些。请教高手,小弟对多线程不是非常了解,谢谢!!!
...全文
313 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liaoyi_ipanel 2008-10-09
  • 打赏
  • 举报
回复
帮顶!
冰思雨 2008-10-09
  • 打赏
  • 举报
回复
不知到问题出现在哪里。

我这里,只知道思路,
首先创建一个线程安全的队列。用于存放待下载图片的连接地址。
然后,创建几个线程,循环从队列里面取出一个地址,然后,下载到硬盘里面。
(如果下载过程中出现问题,要写个简单的日志。)

创建一个线程,把图片的连接地址,放到队列里面。

That's all
冰思雨 2008-10-09
  • 打赏
  • 举报
回复
不知到问题出现在哪里。

我这里,只知道思路,
首先创建一个线程安全的队列。用于存放待下载图片的连接地址。
然后,创建几个线程,循环从队列里面取出一个地址,然后,下载到硬盘里面。
(如果下载过程中出现问题,要写个简单的日志。)

创建一个线程,把图片的连接地址,放到队列里面。

That's all

62,614

社区成员

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

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