当前位置: 代码迷 >> J2SE >> 在NIO中,怎么同步接收线程池中返回的处理结果,同时做到不阻塞程序
  详细解决方案

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

热度:149   发布时间:2016-04-24 01:42:57.0
在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()
  相关解决方案