summaryrefslogtreecommitdiff
path: root/java/src/Ice/Application.java
diff options
context:
space:
mode:
authorMatthew Newhook <matthew@zeroc.com>2014-08-07 14:36:07 -0230
committerMatthew Newhook <matthew@zeroc.com>2014-08-07 14:36:07 -0230
commitb36ae21c88735cbd2c39c5ccde2572a8fcc4e928 (patch)
treedfd5eee6e7d61a9c6efcbaabe916639009aaa9af /java/src/Ice/Application.java
parentAdd @Override where possible, and remove trailing white space. (diff)
downloadice-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.java12
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;
}
}
}