fengjiachun/Jupiter

AbstractFuture isDone方法可能的问题

uvletter opened this issue · 5 comments

AbstractFutureisDone 方法我觉得应该改成

public boolean isDone() {
    return state > COMPLETING;
}

因为在state被设置为 COMPLETING 和设置为 NORMAL EXCEPTIONAL 之间不是原子的,如果在这个空窗期调用了

        if (isDone()) {
            notifyListeners(state(), outcome());
        }

可能会导致结果还没准备好就发出通知了。

不知道我理解的有没有问题,如有不对还请指正:-)

@uvletter 👍 看的够仔细, 确实如你所说, 这里是个bug, 代码已改, 暂时未提交, 最近有个大的改动, 到时候合并一起提交, 十分感谢!!!

言重了,最近一直在学习您的代码,感觉获益颇多,这个姑且算是学习过程中意外的发现吧,也算是一点小小回馈 : -)

@uvletter 如果没有加入Jupiter的QQ群[397633380],可以加下.里面都是Jupiter的死忠粉.可以互相交流技术

@xingguang2013 哈哈,谢谢了,不过我对社交不感冒,更喜欢随心所欲做自己喜欢的=_=