Javaflow -


Apache
跨平台
Java

软件简介

Sometimes it is usefull if we can capture the state of the application, its
stack of function calls, which includes local variables, the global variables
and the program counter, and save them into an object. If this object would
give us the ability to restart the processing from the point stored in it.

A continuation is exactly the type of object that we need. Think of a
continuation as an object that, for a given point in your program, contains a
snapshot of the stack trace, including all the local variables, and the
program counter. You can not only store these things in the continuation
object, but also restore the execution of the program from a continuation
object. This means that the stack trace and the program counter of the running
program become the ones stored in a continuation.

Continuations are powerful concepts from the world of functional languages,
like Scheme, but they are becoming popular in other languages as well.

示例代码:

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());
System.out.println("returned a continuation");