1

私は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 を出力します。それでも、なぜ「それらは等しくない!」のですか? (プログラムはこの出力を提供します)。誰か説明してくれませんか?

4

1 に答える 1

0

JavaFlow の継続は、デフォルトの.equals()セマンティクスを実装します。つまり、クラスの.equals()メソッドをオーバーロードしません。Object

SVN レポジトリの実装でそれを自分で確認できます。

つまり、同じスタック状態に対応するように Continuation をセットアップしたとしても.equals()、それが機能した方法では false が返されます。

于 2012-04-19T00:27:03.923 に答える