mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-22 06:12:05 +01:00
21c0be5e2a
the combination with concurrencyLevel and LinkedBlockingQueue never worked as intented. The idea was that the cachedExecutorService would spawn new threads until maximumPoolSize (=concurrencyLevel) is reached, and then start queing the Runnables. But this was not the case, since ThreadPoolExecutor does not take into consideration if the worker threads is busy, i.e. executing a Runnable, or idle, i.e. waiting for a Runnable. This means that if a busy Worker would execute a Runnable, which would block, because it's waiting for an event (e.g. an incoming IQ request), then the handling of those incoming IQ request would be queued by ThreadPoolExecutor, because no fewer threads then corePoolSize are running and the task can be queued (since the LinkedBlockingQueue is unbounded). |
||
---|---|---|
.. | ||
src | ||
.gitignore | ||
build.gradle |