puniverse / quasar

Fibers, Channels and Actors for the JVM

Home Page:http://docs.paralleluniverse.co/quasar/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

why do I call the constructor multiple times when I use sleep in another thread

MiracleJoey opened this issue · comments

commented

`public class Tester {

static Channel channel;
public static void main(String[]args) throws InterruptedException, SuspendExecution {
    channel = startFiber();
    channel.send( "1");
    channel.send("2");
    channel.send("3");
    Thread.sleep(1000);
    channel.send("4");
    channel.send("5");
    System.out.println("out");
}
public static Channel startFiber() {
    System.out.println("--------------------------------------------------1:" + Thread.currentThread().getName());
    Channel<String> channel = ChannelFactory.newChannel();
    new Fiber("fiber", () -> {
        System.out.println("--------------------------------------------------2:" + Thread.currentThread().getName());
        BASIC_TURN:
        while (true) {
            System.out.println("--------------------------------------------------3:" + Thread.currentThread().getName());
            select(receive(channel));
        }
    }).start();
    return channel;
}

}
`

--------------------------------------------------1:main
--------------------------------------------------2:ForkJoinPool-default-fiber-pool-worker-13
--------------------------------------------------3:ForkJoinPool-default-fiber-pool-worker-13
--------------------------------------------------3:ForkJoinPool-default-fiber-pool-worker-13
--------------------------------------------------3:ForkJoinPool-default-fiber-pool-worker-13
--------------------------------------------------3:ForkJoinPool-default-fiber-pool-worker-13
out
--------------------------------------------------2:ForkJoinPool-default-fiber-pool-worker-13
--------------------------------------------------3:ForkJoinPool-default-fiber-pool-worker-13
--------------------------------------------------3:ForkJoinPool-default-fiber-pool-worker-13
--------------------------------------------------3:ForkJoinPool-default-fiber-pool-worker-13

why the second step is executed twice

commented

The correct use of agents can solve this problem

-javaagent:quasar-core-0.8.0.jar