diff options
author | Matthew Newhook <matthew@zeroc.com> | 2014-08-07 14:36:07 -0230 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2014-08-07 14:36:07 -0230 |
commit | b36ae21c88735cbd2c39c5ccde2572a8fcc4e928 (patch) | |
tree | dfd5eee6e7d61a9c6efcbaabe916639009aaa9af /java/src/Ice/Application.java | |
parent | Add @Override where possible, and remove trailing white space. (diff) | |
download | ice-b36ae21c88735cbd2c39c5ccde2572a8fcc4e928.tar.bz2 ice-b36ae21c88735cbd2c39c5ccde2572a8fcc4e928.tar.xz ice-b36ae21c88735cbd2c39c5ccde2572a8fcc4e928.zip |
ICE-1593 Handling thread interrupts in Java
- Added Ice.BackgroundIO property to perform all IO in a non-user
thread. This makes Ice for Java interrupt safe. This is implemented
by the QueueRequestHanbler.
- EndpointHostResolver now uses an executor instead of a thread.
- Added java/demo/Ice/interrupt and java/test/Ice/interrupt.
- Made several changes that must be ported to C++ & C#.
- InvocationTimeout exceptions can hang forever.
- Connection establishment is always asynchronous.
- RequestHandler.requestTimeout and asyncRequestTimeout have been
renamed to requestCancel and asyncRequestCancel.
Diffstat (limited to 'java/src/Ice/Application.java')
-rw-r--r-- | java/src/Ice/Application.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/java/src/Ice/Application.java b/java/src/Ice/Application.java index 3c649f72301..4190f39043e 100644 --- a/java/src/Ice/Application.java +++ b/java/src/Ice/Application.java @@ -240,16 +240,22 @@ public abstract class Application synchronized(_mutex) { + boolean interrupted = false; while(_callbackInProgress) { try { _mutex.wait(); } - catch(java.lang.InterruptedException ex) + catch(InterruptedException ex) { + interrupted = true; } } + if(interrupted) + { + Thread.currentThread().interrupt(); + } if(_destroyed) { @@ -504,7 +510,7 @@ public abstract class Application } // - // Note that we let the IllegalStateException propogate + // Note that we let the IllegalStateException propagate // out if necessary. // if(newHook != null) @@ -590,6 +596,7 @@ public abstract class Application } catch(InterruptedException ex) { + break; } } } @@ -625,6 +632,7 @@ public abstract class Application } catch(InterruptedException ex) { + break; } } } |