JAVA-线程-下载文件-求解,该怎么解决
JAVA--线程--下载文件--求解
网上服务器的文件1000个,文件的地址我都放到一个集合里边了,想用java遍历集合并下载他们,但是考虑到会出现这个情况:当某个文件下载的时候网速特别不给力,一直下载不下来,估计就会阻塞了。假如把集合分五份 ,然后我开5个线程,五个线程分别下载文件,每个线程在下载一个文件结束后就下载另一个文件,如果某个文件阻塞了则自动跳过它下载下一个文件。
红色字体那一部分我不知道怎么去写,还望大家给我个思路。谢谢
------解决思路----------------------
1、 使用 Executor 并发线程同时操作 5 个文件, 使用 IO 下载文件
final ExecutorService exec = Executors.newFixedThreadPool(5);
2、如果出现阻塞了, 你在 Executor 时, 通过 Future 收集每个线程的计算结果, 如果超过 20 秒或者多少秒没有返回的计算结果, 则 cancel 这个线程
future.get(2000);
get(long timeout, TimeUnit unit)
如有必要,最多等待为使计算完成所给定的时间之后,获取其结果(如果结果可用)。
网上服务器的文件1000个,文件的地址我都放到一个集合里边了,想用java遍历集合并下载他们,但是考虑到会出现这个情况:当某个文件下载的时候网速特别不给力,一直下载不下来,估计就会阻塞了。假如把集合分五份 ,然后我开5个线程,五个线程分别下载文件,每个线程在下载一个文件结束后就下载另一个文件,如果某个文件阻塞了则自动跳过它下载下一个文件。
红色字体那一部分我不知道怎么去写,还望大家给我个思路。谢谢
------解决思路----------------------
1、 使用 Executor 并发线程同时操作 5 个文件, 使用 IO 下载文件
final ExecutorService exec = Executors.newFixedThreadPool(5);
2、如果出现阻塞了, 你在 Executor 时, 通过 Future 收集每个线程的计算结果, 如果超过 20 秒或者多少秒没有返回的计算结果, 则 cancel 这个线程
future.get(2000);
get(long timeout, TimeUnit unit)
如有必要,最多等待为使计算完成所给定的时间之后,获取其结果(如果结果可用)。