Mercurial Hosting > nabble
view src/fschmidt/util/executor/ThreadPool.java @ 68:00520880ad02
add fschmidt source
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 05 Oct 2025 17:24:15 -0600 |
parents | |
children |
line wrap: on
line source
package fschmidt.util.executor; import java.util.Queue; import java.util.LinkedList; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public final class ThreadPool extends AbstractThreadPool implements Executor { private static final Logger logger = LoggerFactory.getLogger(ThreadPool.class); private final Queue<Runnable> queue = new LinkedList<Runnable>(); public ThreadPool(int size) { super(size); start(); } @Override public final void execute(Runnable command) { dispatch(command); } public final synchronized boolean dispatch(Runnable command) { if( !isRunning() ) return false; queue.add(wrap(command)); notify(); return true; } @Override synchronized Runnable getCommand() { Runnable command; while( (command = queue.poll()) == null ) { if( !isRunning() ) return null; try { wait(); } catch(InterruptedException e) { logger.error("",e); } } return command; } @Override public final synchronized int getQueueSize() { return queue.size(); } }