ThreadPoolExecutor
is an object that efficiently manages and controls the execution of multiple tasks in a thread pool. A thread pool
is a collection of pre-initialized threads ready to execute tasks. Instead of creating a new thread for each task, which can be costly in terms of
system resources, a thread pool reuses existing threads.
java.util.concurrent.ScheduledThreadPoolExecutor
is an extension of ThreadPoolExecutor
that can additionally schedule
commands to run after a given delay or to execute periodically.
ScheduledThreadPoolExecutor
's pool is sized with corePoolSize
, so setting corePoolSize
to zero means the
executor will have no threads and run nothing. corePoolSize
should have a value greater than zero and valid for your tasks.
This rule detects instances where corePoolSize
is set to zero via its setter or the object constructor.
public void do(){ int poolSize = 5; // value greater than 0 ScheduledThreadPoolExecutor threadPool1 = new ScheduledThreadPoolExecutor(0); // Noncompliant ScheduledThreadPoolExecutor threadPool2 = new ScheduledThreadPoolExecutor(poolSize); threadPool2.setCorePoolSize(0); // Noncompliant }