final int maxPoolSize = Math.max(( m_processors * m_threadsPerProcessor ) + 1, m_processors + 1);
m_threadPool = new PooledExecutor( m_processors + 1 );
m_threadPool.setMinimumPoolSize( 2 ); // at least two threads
m_threadPool.setMaximumPoolSize( maxPoolSize );
m_threadPool.waitWhenBlocked();
m_threadPool.setThreadFactory( new ThreadFactory() {
public Thread newThread(Runnable run) {
Thread newThread = new Thread(run);
newThread.setDaemon( true );
newThread.setPriority( Thread.MIN_PRIORITY );