diff options
author | Mark Spruiell <mes@zeroc.com> | 2002-10-12 00:06:09 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2002-10-12 00:06:09 +0000 |
commit | 90cd7989594c1e64d69b8bc776e48cd745c0ab27 (patch) | |
tree | d554f711a1762dcb784234dab2a468101c2ea1a7 /java/src | |
parent | removed CRLF from windows. argh (diff) | |
download | ice-90cd7989594c1e64d69b8bc776e48cd745c0ab27.tar.bz2 ice-90cd7989594c1e64d69b8bc776e48cd745c0ab27.tar.xz ice-90cd7989594c1e64d69b8bc776e48cd745c0ab27.zip |
removing join() from shutdown hook
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Ice/Application.java | 41 | ||||
-rw-r--r-- | java/src/Ice/ShutdownHook.java | 35 |
2 files changed, 40 insertions, 36 deletions
diff --git a/java/src/Ice/Application.java b/java/src/Ice/Application.java index faa1c836b7c..6bfce8c7647 100644 --- a/java/src/Ice/Application.java +++ b/java/src/Ice/Application.java @@ -94,6 +94,11 @@ public abstract class Application _communicator = null; } + if(_shutdownHook != null) + { + _shutdownHook.done(); + } + return status; } @@ -133,7 +138,7 @@ public abstract class Application // terminated. So the shutdown hook will join the current // thread before to end. // - _shutdownHook = new ShutdownHook(Thread.currentThread()); + _shutdownHook = new ShutdownHook(); Runtime.getRuntime().addShutdownHook(_shutdownHook); } } @@ -163,10 +168,44 @@ public abstract class Application // } + _shutdownHook.done(); _shutdownHook = null; } } + static class ShutdownHook extends Thread + { + ShutdownHook() + { + _done = false; + } + + public synchronized void + run() + { + communicator().shutdown(); + while(!_done) + { + try + { + wait(); + } + catch(InterruptedException ex) + { + } + } + } + + synchronized void + done() + { + _done = true; + notify(); + } + + private boolean _done; + } + private static String _appName; private static Communicator _communicator; private static ShutdownHook _shutdownHook; diff --git a/java/src/Ice/ShutdownHook.java b/java/src/Ice/ShutdownHook.java deleted file mode 100644 index 18ad0d47ae1..00000000000 --- a/java/src/Ice/ShutdownHook.java +++ /dev/null @@ -1,35 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2002 -// Mutable Realms, Inc. -// Huntsville, AL, USA -// -// All Rights Reserved -// -// ********************************************************************** - -package Ice; - -public class ShutdownHook extends Thread -{ - ShutdownHook(Thread threadToJoin) - { - _threadToJoin = threadToJoin; - } - - public void - run() - { - try - { - Ice.Application.communicator().shutdown(); - _threadToJoin.join(); - } - catch(Exception ex) - { - ex.printStackTrace(); - } - } - - private Thread _threadToJoin; -} |