Depending on timing the worker Thread may get started before the UnsynchronizedAppenderBase.start is true.
This results the worker thread not even entering the loop, because parent.isStarted() is still false.
215 class Worker extends Thread {
216
217 public void run() {
218 AsyncAppenderBase<E> parent = AsyncAppenderBase.this;
219 AppenderAttachableImpl<E> aai = parent.aai;
220
221 // loop while the parent is started
222 while (parent.isStarted()) {
AsyncAppenderBase.java:
82 @Override
83 public void start() {
...
99 worker.start();
100 super.start();
101 }
Depending on timing the worker Thread may get started before the UnsynchronizedAppenderBase.start is true.
This results the worker thread not even entering the loop, because parent.isStarted() is still false.
215 class Worker extends Thread {
216
217 public void run() {
218 AsyncAppenderBase<E> parent = AsyncAppenderBase.this;
219 AppenderAttachableImpl<E> aai = parent.aai;
220
221 // loop while the parent is started
222 while (parent.isStarted()) {