我是javaflow的新手。请考虑以下基本示例:
class MyRunnable implements Runnable {
public void run() {
System.out.println("started!");
for( int i=0; i<10; i++ )
echo(i);
}
private void echo(int x) {
System.out.println(x);
Continuation.suspend();
}
}
Continuation c = Continuation.startWith(new MyRunnable());
Continuation d = Continuation.continueWith(c);
Continuation e = Continuation.continueWith(d);
Continuation f = Continuation.continueWith(d);
if (e.equals(f)) System.out.println("They are equal!");
else System.out.println("They are not equal!");
继续e和f都以相同的检查点(d)开始并捕获 相同的堆栈,也都打印1.然后仍然为什么“他们不是 相等!“?(程序给出了这个输出)。有人可以向我解释一下吗?
答案 0 :(得分:0)
JavaFlow中的Continuations实现了默认的.equals()
语义。也就是说,它们不会重载.equals()
类的Object
方法。
您可以在SVN repository。
的实施中亲自查看这就是说,即使你设置Continuations对应于相同的堆栈状态,它们使.equals()
工作的方式也会返回false。