org.apache.commons.javaflow.examples.again.Execution.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.commons.javaflow.examples.again.Execution.java

Source

package org.apache.commons.javaflow.examples.again;

import java.security.SecureRandom;
import java.util.Random;

import org.apache.commons.javaflow.api.Continuation;
import org.apache.commons.javaflow.api.continuable;

public class Execution implements Runnable {

    @Override
    public @continuable void run() {
        final Random rnd = new SecureRandom();
        try {
            Continuation.suspend();
            // LOOP_START
            System.out.println("resumed");

            int r = rnd.nextInt(5);
            if (r != 0) {
                System.out.println("do it again, r=" + r);
                Continuation.again(); // like "GOTO LOOP_START", first statement after closest suspend()
            }

            System.out.println("done");
        } finally {
            // This will be called only once
            System.out.println("Finally is called");
        }
    }
}