我正在使用下面的代码在远程服务器上上传图像。当我在下面使用它时,它会将所有图像同时上传到远程服务器上。
List<Future<String>> futureList = new ArrayList<Future<String>>();
ExecutorService execService = Executors.newFixedThreadPool(Images.size());
for (IImage image : Images) {
try {
//execService.execute(lServerRequest.new uploadImages(image.getDataPath(),image.getDisplayName()));
singleFuture = execService.submit(lServerRequest.new uploadImages(image.getDataPath(),image.getDisplayName()));
//Log.d("","singleFuture -------"+singleFuture.get());
futureList.add(singleFuture);
Log.d("","futureList Size:"+futureList.size());
} catch(Exception e){
execService.shutdown();
}
每当我使用下面的代码时
singleFuture = execService.submit(lServerRequest.new uploadImages(image.getDataPath(),image.getDisplayName()));
//Log.d("","singleFuture -------"+singleFuture.get());
futureList.add(singleFuture);
将所有未来对象添加到futurelist立即从runnable返回(不等待runnable直到完成所有图像的上传(后台上传处理正在进行)
但是,每当我在上面的代码中取消注释时,在成功上传每张图片后,它都会从可运行文件返回。
singleFuture = execService.submit(lServerRequest.new uploadImages(image.getDataPath(),image.getDisplayName()));
Log.d("","singleFuture -------"+singleFuture.get());
futureList.add(singleFuture);
我的代码有什么问题吗?一次可以进行更多的远程服务器连接还是服务器上有任何负载?如何使用并发编程java上传图像?请给我们指导?
submit()
和功能是否execute()
具有相同的效果?