ImgScroll/src/main/java/com/rarchives/ripme/ripper/DownloadThreadPool.java
Kevin Jiang 5b49514e3e 3 Metric Tons of Javadoc documentation for Core Ripper stuff.
There should be no changes to the code. Just a ton of documentation.
It should help newcomers get aquainted with code quicker.
2017-12-28 00:04:23 -05:00

57 lines
1.5 KiB
Java

package com.rarchives.ripme.ripper;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import com.rarchives.ripme.utils.Utils;
/**
* Simple wrapper around a FixedThreadPool.
*/
public class DownloadThreadPool {
private static final Logger logger = Logger.getLogger(DownloadThreadPool.class);
private ThreadPoolExecutor threadPool = null;
public DownloadThreadPool() {
initialize("Main");
}
public DownloadThreadPool(String threadPoolName) {
initialize(threadPoolName);
}
/**
* Initializes the threadpool.
* @param threadPoolName Name of the threadpool.
*/
private void initialize(String threadPoolName) {
int threads = Utils.getConfigInteger("threads.size", 10);
logger.debug("Initializing " + threadPoolName + " thread pool with " + threads + " threads");
threadPool = (ThreadPoolExecutor) Executors.newFixedThreadPool(threads);
}
/**
* For adding threads to execution pool.
* @param t
* Thread to be added.
*/
public void addThread(Thread t) {
threadPool.execute(t);
}
/**
* Tries to shutdown threadpool.
*/
public void waitForThreads() {
threadPool.shutdown();
try {
threadPool.awaitTermination(3600, TimeUnit.SECONDS);
} catch (InterruptedException e) {
logger.error("[!] Interrupted while waiting for threads to finish: ", e);
}
}
}