首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

在NIO中,怎么同步接收线程池中返回的处理结果,同时做到不阻塞程序

2012-03-28 
在NIO中,如何同步接收线程池中返回的处理结果,同时做到不阻塞程序?有一个NIO程序,把从客户端接收到的信息

在NIO中,如何同步接收线程池中返回的处理结果,同时做到不阻塞程序?
有一个NIO程序,把从客户端接收到的信息交给线程池处理,同时要同步接收返回的信息,
如果线程池的处理时间很长,程序在等待处理结果。岂不是整个程序都阻塞了,大家看下下面的处理是否合理。
[code=Java]
                            ExecutorService   exec   =   Executors.newFixedThreadPool(2)

          if   (key.isReadable())   {   //  
        String   task   = "get   from   client   request ";
selKey   =   channel.register(selector,
SelectionKey.OP_WRITE);
selKey.attach(new   Handle(task));
}   else   if   (key.isWritable())   {  
Handle     handle   =   (HandleClient)   key.attachment();
Future   submit   =   exec.submit(handle);   //如果handel的执行时间很长,要1分钟才返回,程序会停住
                                                channel.write( "write   result "+submit.toString());
}
[/code]

[解决办法]
future.cancel()

热点排行