3636import java .util .Map .Entry ;
3737import java .util .concurrent .CancellationException ;
3838import java .util .concurrent .ConcurrentHashMap ;
39+ import java .util .concurrent .ExecutionException ;
3940import java .util .concurrent .ScheduledExecutorService ;
4041import java .util .concurrent .ScheduledFuture ;
4142import java .util .concurrent .TimeUnit ;
43+ import java .util .concurrent .TimeoutException ;
4244import java .util .logging .Level ;
4345import java .util .logging .Logger ;
4446import javax .annotation .Nonnull ;
6163 * </ul>
6264 */
6365public final class Watchdog implements Runnable , BackgroundResource {
66+
6467 private static final Logger LOG = Logger .getLogger (Watchdog .class .getName ());
6568
6669 // Dummy value to convert the ConcurrentHashMap into a Set
@@ -138,12 +141,12 @@ public void shutdown() {
138141
139142 @ Override
140143 public boolean isShutdown () {
141- return executor . isShutdown ();
144+ return future . isCancelled ();
142145 }
143146
144147 @ Override
145148 public boolean isTerminated () {
146- return executor . isTerminated ();
149+ return future . isDone ();
147150 }
148151
149152 @ Override
@@ -153,7 +156,14 @@ public void shutdownNow() {
153156
154157 @ Override
155158 public boolean awaitTermination (long duration , TimeUnit unit ) throws InterruptedException {
156- return executor .awaitTermination (duration , unit );
159+ try {
160+ future .get (duration , unit );
161+ return true ;
162+ } catch (ExecutionException | CancellationException e ) {
163+ return true ;
164+ } catch (TimeoutException e ) {
165+ return false ;
166+ }
157167 }
158168
159169 @ Override
0 commit comments