import co.paralleluniverse.fibers.Fiber;
import co.paralleluniverse.fibers.SuspendExecution;
import co.paralleluniverse.fibers.Suspendable;
import co.paralleluniverse.strands.SuspendableRunnable;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class QuasarCallableDemo {
public static void main(String[] args) throws InterruptedException{
final Callable callable = new Callable() {
@Override
@Suspendable
public Object call() throws Exception {
Fiber.sleep(100);
Fiber.sleep(100);
System.out.println("run");
return null;
}
};
final FutureTask futureTask = new FutureTask(callable);
SuspendableRunnable suspendableRunnable = new SuspendableRunnable() {
@Override
public void run() throws SuspendExecution, InterruptedException {
try {
System.out.println("i am in");
// callable.call();
futureTask.run();
} catch (Exception e) {
}
}
};
new Fiber<Void>(suspendableRunnable).start();
Thread.sleep(1000);
System.exit(0);
}
}
WARNING: Uninstrumented whole methods ('**') or single calls ('!!') detected: at co.paralleluniverse.common.util.ExtendedStackTrace.here() (ExtendedStackTrace.java:46) at co.paralleluniverse.fibers.Fiber.checkInstrumentation() (Fiber.java:1696) at co.paralleluniverse.fibers.Fiber.verifySuspend(co.paralleluniverse.fibers.Fiber) (Fiber.java:1669) at co.paralleluniverse.fibers.Fiber.verifySuspend() (Fiber.java:1664) at co.paralleluniverse.fibers.Fiber.sleep(long,java.util.concurrent.TimeUnit) (Fiber.java:695) at co.paralleluniverse.fibers.Fiber.sleep(long) (Fiber.java:687) at com.meituan.mtthrift.test.QuasarCallableDemo$1.call() (QuasarCallableDemo.java:19) at java.util.concurrent.FutureTask.run() (FutureTask.java:264) ** at com.meituan.mtthrift.test.QuasarCallableDemo$2.run() (QuasarCallableDemo.java:33) at co.paralleluniverse.strands.SuspendableUtils$VoidSuspendableCallable.run() (SuspendableUtils.java:42) at co.paralleluniverse.strands.SuspendableUtils$VoidSuspendableCallable.run() (SuspendableUtils.java:30) at co.paralleluniverse.fibers.Fiber.run() (Fiber.java:1099) at co.paralleluniverse.fibers.Fiber.run1() (Fiber.java:1094)
final SuspendableCallable callable = new SuspendableCallable() {
@Suspendable
public Object run() throws SuspendExecution, InterruptedException {
Fiber.sleep(100);
Fiber.sleep(100);
System.out.println("run");
return null;
}
};
new Fiber<Void>(callable).start();