如何比较Javaflow中的两个延续?

时间:2012-04-19 00:11:09

标签: java

我是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.然后仍然为什么“他们不是 相等!“?(程序给出了这个输出)。有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:0)

JavaFlow中的Continuations实现了默认的.equals()语义。也就是说,它们不会重载.equals()类的Object方法。

您可以在SVN repository

的实施中亲自查看

这就是说,即使你设置Continuations对应于相同的堆栈状态,它们使.equals()工作的方式也会返回false。