【发布时间】:2011-02-25 10:09:23
【问题描述】:
我正在使用下面的代码在远程服务器上上传图片。当我在下面使用时,它会将所有图片同时上传到远程服务器上。
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中等待,直到所有图像上传完成(后台上传处理正在进行))
但是每当我在上面的代码中取消注释时,在成功上传每个图像后,它都会从 runnable 返回。
singleFuture = execService.submit(lServerRequest.new uploadImages(image.getDataPath(),image.getDisplayName()));
Log.d("","singleFuture -------"+singleFuture.get());
futureList.add(singleFuture);
我的代码有什么问题吗?是否可以一次连接更多远程服务器或服务器上有任何负载?如何使用并行编程java上传图像?请指导?
submit() 和 execute() 函数效果一样吗?
【问题讨论】:
标签: java concurrent-programming