ChunkDownload( String dpath, String output, List<String> recentPeers, int segments, Download parent) { done = false; path = dpath; nSeg = segments; peers = recentPeers; segFin = new boolean[nSeg]; doneSegs = 0; status = Dstatus.DOWNLOADING; outFile = output; _parent = parent; segDownloads = new ArrayList<SegDownloader>(segments); bstopped = new ArrayBlockingQueue<SegDownloader>(segments); active = new ArrayBlockingQueue<SegDownloader>(maxThreads); // Helping variables to allow a thread to blocking wait on this download. waitToken = new ArrayBlockingQueue<Boolean>(1); waitToken.add(true); waiters = 0; percentDone = 0; }