我需要创建处理数据库请求的线程池(通常很慢)。我试图理解http://adolgarev.blogspot.com/2013/12/lets-do-our-own-full-blown-http-server.html中的示例,但我不明白如何执行异常处理。当Callable抛出异常时会发生什么。
我查看了DefaultEventExecutor和DefaultEventExecutorGroup的代码。 据我所知,从代码中可以看出来自池的一个线程将在抛出runable异常时关闭。
我需要对抛出的任何异常进行特殊处理,在这种情况下不会关闭任何线程。
答案 0 :(得分:0)
当指定的Callable
抛出异常时(即当Callable
失败时),您将收到添加到Future
返回的EventExecutor.submit(Callable)
的监听器的通知(即将调用operationComplete()
。)您可以通过Callable
或Future.isSuccess()
检查Future.cause()
的执行是否成功。