5b49514e3e
There should be no changes to the code. Just a ton of documentation. It should help newcomers get aquainted with code quicker.
57 lines
1.5 KiB
Java
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);
|
|
}
|
|
}
|
|
}
|