遇到一个困难的问题, 不知道是不是countDownLatch失效了。
使用completionService+ countDownLatch的组合, 在await()之后对service进行poll, 但是居然没有返回future而是返回null。 在poll的时候加上50毫秒的等待时间后, 就不出这个问题了。 真奇怪, future里面的业务逻辑我是放在try里面的, countDown是放在finally里面的, 照理说latch的await()能过, 后面对service的poll()应该是不用加等待时间也不会返回null才对。 想不明白, 只能猜测是finally执行完countDown以后, future的状态转换以及done()还需要一些时间。 所以现在很困惑, 应该poll(), poll(timewait), take()中哪一种方法去获取执行结果才是合理的呢。
登录后可查看更多问答,登录/注册