summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/ThreadPool.java
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2002-03-08 18:34:41 +0000
committerMark Spruiell <mes@zeroc.com>2002-03-08 18:34:41 +0000
commita2d34e1ec452a7b9894fe1d6e7b9363a8d2497f5 (patch)
tree056b9f97fe4e9fc4e5133be613a92d3d34846392 /java/src/IceInternal/ThreadPool.java
parentadding optimize attribute (diff)
downloadice-a2d34e1ec452a7b9894fe1d6e7b9363a8d2497f5.tar.bz2
ice-a2d34e1ec452a7b9894fe1d6e7b9363a8d2497f5.tar.xz
ice-a2d34e1ec452a7b9894fe1d6e7b9363a8d2497f5.zip
initial performance fixes
Diffstat (limited to 'java/src/IceInternal/ThreadPool.java')
-rw-r--r--java/src/IceInternal/ThreadPool.java39
1 files changed, 23 insertions, 16 deletions
diff --git a/java/src/IceInternal/ThreadPool.java b/java/src/IceInternal/ThreadPool.java
index 724c261e23f..de46b6764cc 100644
--- a/java/src/IceInternal/ThreadPool.java
+++ b/java/src/IceInternal/ThreadPool.java
@@ -592,31 +592,38 @@ catch (RuntimeException ex)
// ignore the event in this case.
//
BasicStream stream = new BasicStream(_instance);
- if (handler.readable())
+ try
{
- try
+ if (handler.readable())
{
- if (!read(handler)) // No data available.
+ try
{
+ if (!read(handler)) // No data available.
+ {
//System.out.println("ThreadPool - no input");
+ continue repeatSelect;
+ }
+ }
+ catch (Ice.TimeoutException ex) // Expected
+ {
continue repeatSelect;
}
- }
- catch (Ice.TimeoutException ex) // Expected
- {
- continue repeatSelect;
- }
- catch (Ice.LocalException ex)
- {
- handler.exception(ex);
- continue repeatSelect;
+ catch (Ice.LocalException ex)
+ {
+ handler.exception(ex);
+ continue repeatSelect;
+ }
+
+ stream.swap(handler._stream);
+ assert(stream.pos() == stream.size());
}
- stream.swap(handler._stream);
- assert(stream.pos() == stream.size());
+ handler.message(stream);
+ }
+ finally
+ {
+ stream.destroy();
}
-
- handler.message(stream);
break;
}