java - ExecutorService awaitTermination shutdown signal in the Runnable instance -


i've few questions around executorservice , shutdown process. use case: use executorservice spawn fixed number of threads run method this:

while (true) {    try {       this.currentthreadrunning = true;       processmessage();    }    catch (throwable e) {       // keeping thread alive despite exceptions.    } } 

these threads run infinitely, polling messages.

what trying do? polling sqs queue messages , processing them.

obviously, in case, executorservice's shutdown method not work. when shutdownnow() called, threads shutdown unceremoniously. hate it!

is there way invoke awaittermination , verify, in runnable instance(in block?), if shutdown has been initiated , trigger same current thread?

update: i've refactored code perform polling , spawning threads process them. thus, runnable instance's run method need not endless loop. , awaitermination lead definite closure of threads. , sure, i've triggered shutdownnow after awaittermination.

i think doing conceptually wrong.

awaittermination meant wait threads finish naturally , stop executor. when submitting runnable, shouldn't have idea of context of it's execution, so, coupling runnable executor not idea imho.

maybe should future class , move runnable implementation there. forced implement cancel(boolean) method might find useful.

what use case? maybe if explain it, community can point out better suited implementation.


Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

css - Can I use the :after pseudo-element on an input field? -