public int getCurrentThreads() {return condGet(ThreadPoolExecutor::getPoolSize, 0);} public int getQueueSize() {return condGet(p -> p.getQueue().size(), 0);}
public int getMinThreads() {return condGet(ThreadPoolExecutor::getCorePoolSize, 0);} public void setMinThreads(int size) {condSet(p -> p.setCorePoolSize(size));}
public int getMaxThreads() {return condGet(ThreadPoolExecutor::getMaximumPoolSize, 0);} public void setMaxThreads(int size) {condSet(p -> p.setMaximumPoolSize(size));}
public boolean isShutdown() {return condGet(ThreadPoolExecutor::isShutdown, false);} public boolean getNonBlockingTaskHandling() {return non_blocking_task_handling;}
public int getQueueSize() {return condGet(p -> p.getQueue().size(), 0);} public int size() {return queue.size();}
public long getKeepAliveTime() {return condGet(p -> p.getKeepAliveTime(TimeUnit.MILLISECONDS), 0L);} public void setKeepAliveTime(long time) {condSet(p -> p.setKeepAliveTime(time, TimeUnit.MILLISECONDS));}
public int getMaxThreads() {return condGet(ThreadPoolExecutor::getMaximumPoolSize, 0);} public void setMaxThreads(int size) {condSet(p -> p.setMaximumPoolSize(size));}
public int getMinThreads() {return condGet(ThreadPoolExecutor::getCorePoolSize, 0);} public void setMinThreads(int size) {condSet(p -> p.setCorePoolSize(size));}
public int getCurrentThreads() {return condGet(ThreadPoolExecutor::getPoolSize, 0);} public int getQueueSize() {return condGet(p -> p.getQueue().size(), 0);}
public boolean isShutdown() {return condGet(ThreadPoolExecutor::isShutdown, false);} public boolean getNonBlockingTaskHandling() {return non_blocking_task_handling;}
public int getQueueSize() {return condGet(p -> p.getQueue().size(), 0);} public int size() {return queue.size();}
public long getKeepAliveTime() {return condGet(p -> p.getKeepAliveTime(TimeUnit.MILLISECONDS), 0L);} public void setKeepAliveTime(long time) {condSet(p -> p.setKeepAliveTime(time, TimeUnit.MILLISECONDS));}