Bug #2161
Updated by Henning Blohm 11 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 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