我是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。那么为什么“它们不相等!”?(程序提供此输出)。有人能给我解释一下吗?
发布于 2012-04-19 08:27:04
JavaFlow中的Continuations实现了默认的.equals()语义。也就是说,它们不会重载Object类的.equals()方法。
您可以在SVN repository的实现中亲眼看到它。
这就是说,即使您将Continuations设置为与相同的堆栈状态相对应,它们使.equals()工作的方式,它也将返回false。
https://stackoverflow.com/questions/10219914
复制相似问题