Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在单独的线程中下载函数_Java_Android_Multithreading_Networking - Fatal编程技术网

Java 在单独的线程中下载函数

Java 在单独的线程中下载函数,java,android,multithreading,networking,Java,Android,Multithreading,Networking,在我的android应用程序中,偶尔会有一些文件需要下载。 我编写了一个下载函数,如下所示: public static void download(Context context, String url, String path) { URLConnection conection = new URL(url).openConnection(); conection.connect(); InputStream is = new URL(url).openStream();

在我的android应用程序中,偶尔会有一些文件需要下载。 我编写了一个下载函数,如下所示:

public static void download(Context context, String url, String path) {
   URLConnection conection = new URL(url).openConnection();
   conection.connect();
   InputStream is = new URL(url).openStream();
   OutputStream os = context.openFileOutput(path, 0);
   pipe(is, os);   // write from inputstream to outputstream
   os.close();
}
我无法决定是否将此函数放在单独的线程中?
当我把它放在一个单独的线程中时,如果我想用for循环下载10个文件,那么所有文件都开始在10个单独的线程中同时下载,这是不好的! 当我没有在一个单独的线程,然后主线程必须等到下载完成,这是不好的太


解决方案是什么?

解决方案不是将此函数放入线程,而是在需要时从线程调用该函数。

如果您希望在后台下载文件,并让它们一次下载一个,请使用ThreadPoolExecutor并向其提交可运行文件:


线程+固定大小池执行器