Bug #2161
Updated by Henning Blohm 3 months ago
When interrupting a thread in the thread pool, it will terminate but still be in the pool. This happens in WorkerThread.java: <pre><code> <pre><code class="java"> if (this.wm.taskCompleted(this)) { synchronized (this) { if (!this.kicked) { // only if not having been kicked between being put into // the pool and entering this block waiting = true; try { this.wait(); } catch (InterruptedException e) { logger.fine("Thread interrupted: "+this); } finally { this.waiting = false; } } else this.kicked = false; } } else synchronized (this) {} // also to comply to the memory model </code></pre> The code is super outdated and far to complex. h2. Acceptance Criteria * The ThreadPool code is simplified with less concurrency spaghetti code * When a thread is interrupted, it is terminating and remove from the pool * The fix is merged into master * JMX names are preserved