Project

General

Profile

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 

Back