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/IceInternal/Util.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/IceInternal/Util.java')
-rw-r--r-- | java/src/IceInternal/Util.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/java/src/IceInternal/Util.java b/java/src/IceInternal/Util.java index 4bd8ef592e2..647262fe90b 100644 --- a/java/src/IceInternal/Util.java +++ b/java/src/IceInternal/Util.java @@ -9,8 +9,41 @@ package IceInternal; +import java.util.concurrent.ThreadFactory; + public final class Util { + static String + createThreadName(final Ice.Properties properties, final String name) { + String threadName = properties.getProperty("Ice.ProgramName"); + if(threadName.length() > 0) + { + threadName += "-"; + } + + threadName = threadName + name; + return threadName; + } + + static ThreadFactory + createThreadFactory(final Ice.Properties properties, final String name) { + return new java.util.concurrent.ThreadFactory() + { + @Override + public Thread newThread(Runnable r) + { + Thread t = new Thread(r); + t.setName(name); + + if(properties.getProperty("Ice.ThreadPriority").length() > 0) + { + t.setPriority(Util.getThreadPriorityProperty(properties, "Ice")); + } + return t; + } + }; + } + public static Instance getInstance(Ice.Communicator communicator) { |