@ -98,6 +98,8 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@@ -98,6 +98,8 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@ -406,6 +408,7 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@@ -406,6 +408,7 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
Set<Thread>threads=this.activeThreads;
if(threads!=null){
if(this.cancelRemainingTasksOnClose){
this.cancelled=true;
// Early interrupt for remaining tasks on close
threads.forEach(Thread::interrupt);
}
@ -419,6 +422,7 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@@ -419,6 +422,7 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
catch(InterruptedExceptionex){
Thread.currentThread().interrupt();
}
this.cancelled=true;
}
if(!this.cancelRemainingTasksOnClose){
// Late interrupt for remaining tasks after timeout
@ -429,6 +433,12 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@@ -429,6 +433,12 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
}
}
privatevoidcheckCancelled(){
if(this.cancelled){
thrownewTaskRejectedException(getClass().getSimpleName()+" has cancelled all remaining tasks");
@ -476,16 +486,27 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
@@ -476,16 +486,27 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator