Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.apache.log4j.Logger;
- import java.util.concurrent.ThreadPoolExecutor;
- /**
- * Thread monitoring its' ThreadPoolExecutor.
- *
- * @author Thibault Helsmoortel
- */
- public class MonitorThread implements Runnable {
- private static final Logger LOGGER = Logger.getLogger(MonitorThread.class);
- private ThreadPoolExecutor executor;
- private int seconds;
- private boolean run = true;
- /**
- * Class constructor specifying executor and delay.
- */
- public MonitorThread(ThreadPoolExecutor executor, int delay) {
- this.executor = executor;
- this.seconds = delay;
- }
- /**
- * Shuts down this Thread.
- */
- public void shutdown() {
- this.run = false;
- }
- @Override
- public void run() {
- while (run) {
- LOGGER.debug(
- String.format(
- "[monitor] [%d/%d] Active: %d, Completed: %d, Task: %d, isShutdown: %s, isTerminated: %s",
- this.executor.getPoolSize(),
- this.executor.getCorePoolSize(),
- this.executor.getActiveCount(),
- this.executor.getCompletedTaskCount(),
- this.executor.getTaskCount(),
- this.executor.isShutdown(),
- this.executor.isTerminated()));
- try {
- Thread.sleep(seconds * 1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment