Project

General

Profile

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

Back