私には3つのタスクがあります:
- 最初: htmlFile --------\ の両方を同じ実行プログラムで順番にダウンロードします。正常に動作しています。
2 番目: htmlFile を解凍します ----------/
3 番目: イメージのダウンロード ------> 別のエグゼキュータで、イメージを 5 つのファイルに分割してダウンロードする必要があります。そのためには、FixedThreadPool(5) を使用しています。
しかし、クリックしてダウンロードすると、htmlDownload の終了を待たずに画像のダウンロードが開始されます。どうすれば executorPool が別の executor singleThread を待つことができますか??
メインクラス:
ExecutorService e = Executors.newSingleThreadExecutor();
//Download HTML and Unzip Threads
typeDownloaded = "html";
DownloadUtil.downloadHtml(e, this, dns, port, uuid, filePathHtmlDownload, cookies, typeDownloaded);
UnzipUtil.unZipHtml(e, this, filePathHtmlDownload, outputFolder, typeDownloaded);
typeDownloaded = "images";
DownloadUtil.downloadImages(e, this, dns, port, numImg, uuid, cookies, typeDownloaded);
私の DownloadUtil クラス:
public class DownloadUtil {
private static Logger log = Logger.getLogger(LoginLocalServiceImpl.class.getName());
public static void downloadHtml(Executor e, MainViewController controller, String dns, int port,
String offlineUUID, String filePath, Map<String, String> cookies, String type) throws IOException {
String urlHtml = "http://" + dns + ":" + port + Constants.TARGET_SERVICE_DOWNLOADFILES + offlineUUID;
System.out.println(urlHtml);
e.execute(new DownloaderTask(controller, urlHtml, filePath, cookies, type));
}
public static void downloadImages(Executor e, MainViewController controller, String dns, int port, int numImg,
String uuid, Map<String, String> cookies, String type) throws SystemException, IOException {
String filePath;
String urlImages;
if (numImg == 1) {
filePath = System.getProperty("user.home") + File.separator + "Documents" + File.separator + "TargetApp" + File.separator + "TempImageDownload.zip";
urlImages = "http://" + dns + ":" + port + Constants.TARGET_SERVICE_DOWNLOADIMAGES + uuid;
e.execute(new DownloaderTask(controller, urlImages, filePath, cookies, type));
} else {
ExecutorService exec = Executors.newFixedThreadPool(numImg);
for (int i = 0; i < numImg; i++) {
filePath = System.getProperty("user.home") + File.separator + "Documents" + File.separator + "TargetApp" + File.separator + "TempImage" + i + "Download.zip";
urlImages = "http://" + dns + ":" + port + Constants.TARGET_SERVICE_DOWNLOADIMAGES + uuid + "/?pos=" + (i);
exec.execute(new DownloaderTask(controller, urlImages, filePath, cookies, type));
}
}
}
}