package co.paralleluniverse.fibers.dynamic;
import co.paralleluniverse.fibers.Fiber;
import co.paralleluniverse.fibers.SuspendExecution;
import java.util.ArrayList;
public class DynamicallyLoadedFiber extends Fiber<ArrayList<String>> {
@Override
protected ArrayList<String> run() throws SuspendExecution, InterruptedException {
ArrayList<String> results = new ArrayList<>();
Test testClass = new Test();
results.add("a");
Fiber.park();
results.add("b");
testClass.test(results);
results.add("c");
return results;
}
private static class Base {
public void baseTest(ArrayList<String> results) throws SuspendExecution {
results.add("base1");
Fiber.park();
results.add("base2");
}
}
private static class Test extends Base {
public void test(ArrayList<String> results) throws SuspendExecution {
results.add("o1");
Fiber.park();
results.add("o2");
baseTest(results);
results.add("o3");
}
}
}