AbstractFuture isDone方法可能的问题
uvletter opened this issue · 5 comments
uvletter commented
AbstractFuture
的 isDone
方法我觉得应该改成
public boolean isDone() {
return state > COMPLETING;
}
因为在state被设置为 COMPLETING
和设置为 NORMAL
EXCEPTIONAL
之间不是原子的,如果在这个空窗期调用了
if (isDone()) {
notifyListeners(state(), outcome());
}
可能会导致结果还没准备好就发出通知了。
不知道我理解的有没有问题,如有不对还请指正:-)
fengjiachun commented
@uvletter 👍 看的够仔细, 确实如你所说, 这里是个bug, 代码已改, 暂时未提交, 最近有个大的改动, 到时候合并一起提交, 十分感谢!!!
uvletter commented
言重了,最近一直在学习您的代码,感觉获益颇多,这个姑且算是学习过程中意外的发现吧,也算是一点小小回馈 : -)
xingguang2013 commented
@uvletter 如果没有加入Jupiter的QQ群[397633380],可以加下.里面都是Jupiter的死忠粉.可以互相交流技术
uvletter commented
@xingguang2013 哈哈,谢谢了,不过我对社交不感冒,更喜欢随心所欲做自己喜欢的=_=
fengjiachun commented
@uvletter done