if (task.isDirectDownload()) {
// first get the locations of all users having access to this file
DownloadTaskDirect directTask = (DownloadTaskDirect) task;
// Hint: Run it in a separate thread (not in the thread pool) because the executor does not
// guarantee the in-order processing.
new Thread(new GetLocationsList(directTask, dataManager)).start();
// then download all chunks in separate threads
for (MetaChunk chunk : task.getOpenChunks()) {
DownloadChunkRunnableDirect runnable = new DownloadChunkRunnableDirect(directTask, chunk, messageManager,
keyManager, fileConfig);