summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2002-10-12 00:06:09 +0000
committerMark Spruiell <mes@zeroc.com>2002-10-12 00:06:09 +0000
commit90cd7989594c1e64d69b8bc776e48cd745c0ab27 (patch)
treed554f711a1762dcb784234dab2a468101c2ea1a7 /java/src
parentremoved CRLF from windows. argh (diff)
downloadice-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.java41
-rw-r--r--java/src/Ice/ShutdownHook.java35
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;
-}