diff options
Diffstat (limited to 'java/demo/Ice/interrupt/TaskManagerI.java')
-rw-r--r-- | java/demo/Ice/interrupt/TaskManagerI.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/java/demo/Ice/interrupt/TaskManagerI.java b/java/demo/Ice/interrupt/TaskManagerI.java new file mode 100644 index 00000000000..a0cf5886d4c --- /dev/null +++ b/java/demo/Ice/interrupt/TaskManagerI.java @@ -0,0 +1,56 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +import java.util.concurrent.ExecutorService; + +import Demo.*; + +public class TaskManagerI extends _TaskManagerDisp +{ + public TaskManagerI(ExecutorService executor) + { + _executor = executor; + } + + @Override + public void + run(int id, Ice.Current current) + { + System.out.println("starting task " + id); + // Sleep for 10 seconds. + try + { + Thread.sleep(10000); + System.out.println("stopping task " + id); + } + catch(InterruptedException ex) + { + // + // We are done, the server is shutting down. + // + System.out.println("interrupted task " + id); + } + } + + @Override + public void + shutdown(Ice.Current current) + { + System.out.println("Shutting down..."); + // + // Call shutdownNow on the executor. This interrupts all + // executor threads causing any running upcalls to terminate + // quickly. + // + _executor.shutdownNow(); + current.adapter.getCommunicator().shutdown(); + } + + private ExecutorService _executor; +} |