JAVA多线程下载问题。总是遇到资源响应错误的问题。

Python017

JAVA多线程下载问题。总是遇到资源响应错误的问题。,第1张

单纯的就上面个这个代码来说是没有问题的。你先打印出http.getResponseCode()的值是多少。到API中去看对应的原因是什么。状态码打印出来了去HttpURLConnection类下面找对应的错误描述。找到原因了就自然解决了,你给的代码太少了。也只能给你分析到这里了。

先建一个用于下载文件的多线程类,通常要指明下载文件的位置(URL)和文件名以及保存到本地的路径

public class FileDownloader implements Runnable

{

private static File file//要下载的文件

private static String url//文件所在URL

private static File storagePath//保存路径

public static void initialize(File file, String url, File storagePath)//初始化静态字段,初始化的代码不用我写吧

}

然后,指明同步块,目的是让各个线程共享一个文件资源,那样它们可以知道同一个文件的下载状况(即获取其他线程下载文件到哪个位置,以防重复下载)

public synchronized void fileDownload()//此方法用于下载文件,一般的Java程序员都会写,实在不会我可以帮你补上

或者

public void fileDownload(){

synchronized(file){

synchronized(url){

synchronized(storagePath){

}}}}//给每个字段加上同步块

run()方法的实现就以自己的喜好去写吧,只要里面调用了fileDownload()方法就行。

public void run(){

fileDownload()//下载文件

}

然后,在主类的main方法中创建一个多线程数组:

Runnable[] fds=new FileDownloader[线程数量]//fds为file_downloaders缩写

Thread[] threads=new Thread[线程数量]

最后使用循环把所有的线程逐一启动。

for(int i=0i<线程数量i++){

threads[i]=new Thread(fds[i])

threads[i].start()

}