FutureTask异常捕获问题

如题,我用用FutureTask来监视一个限时任务,但是捕获不到异常,哪位帮忙分析一下。顺便说一下我的功能:我要实现一个流媒体分发的功能,例如同一路视频要分发给不同的用户,流是通过HTTP方式发给客户端,同一路流的所有请求者放在一个LIST里面,如果不限时,当其中一个用户的网路很差的时候就会将列表中其他的用户也堵住,不符合实时流分发的要求,所以要用FutureTask来控制发送时间,如果有哪位兄弟做过类似的东西也可以给我一些意见
1.这是异常
[code="java"]
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at org.mortbay.io.nio.SelectChannelEndPoint.blockWritable(SelectChannelE
ndPoint.java:279)
at org.mortbay.jetty.AbstractGenerator$Output.blockForOutput(AbstractGen
erator.java:544)
at org.mortbay.jetty.AbstractGenerator$Output.flush(AbstractGenerator.ja
va:571)
at org.mortbay.jetty.HttpConnection$Output.flush(HttpConnection.java:101
0)
at com.hisome.web.httpplayer.thread.RealCallable.call(RealCallable.java:
22)
at com.hisome.web.httpplayer.thread.RealCallable.call(RealCallable.java:
13)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:603)
at java.lang.Thread.run(Thread.java:729)
2012-09-21 13:40:14,858 INFO httpplayer.thread.RealCallable -RealCallable write
byte IOException
[/code]
2.这个是RealCallable的类
[code="java"]
public Integer call() throws Exception {
try {
if (res != null && res.getOutputStream() != null) {
res.getOutputStream().write(buffer.array());
res.getOutputStream().flush();
res.flushBuffer();
}
} catch (IOException e) {
if (e instanceof EOFException) {
log.info("RealCallable write byte IOException");
return 1;
}
}
return 0;
}
[/code]
3.这个是我获取Future的结果的方法体
[code="java"]
private void checkTaskResult() {
int res = 0;
String streamId = null;
FutureTask future = null;
taskIter = taskMap.entrySet().iterator();
while (taskIter.hasNext()) {
Entry> ele = taskIter.next();
streamId = ele.getKey();
future = ele.getValue();
try {
res = future.get(10, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
res = 0;
} catch (ExecutionException e) {
res = 0;
} catch (TimeoutException e) {
future.cancel(true);
res = 0;
} catch (CancellationException e) {
res = 0;
}
if (res == 1) {
for (StreamInviter inviter : inviters) {
if (inviter.getStreamId().equals(streamId)) {
inviter.setStatus(false);
}
}
}
}
}
[/code]

catch (IOException e) {

if (e instanceof EOFException) {

log.info("RealCallable write byte IOException");

return 1;

}

}

需要重新抛出