Core + max pool size

Core = always-alive workers. Max = grows to this under load. When queue is unbounded, max never triggers.

Advertisement

Core + max pool size

Core = always-alive workers. Max = grows to this under load. When queue is unbounded, max never triggers.

Advertisement

Queue choice matters

LinkedBlockingQueue = unbounded, workers = core. SynchronousQueue = no buffer, direct handoff, workers can grow to max.