开发者

JBoss OrderedExecutor + CountDownLatch don't work as I expect?

开发者 https://www.devze.com 2023-03-29 04:29 出处:网络
Playing with OrderedExecutor, I tried using the CountDownLatch to start all the submitted tasks at the same time, but the tasks don\'t start, they\'re frozen.

Playing with OrderedExecutor, I tried using the CountDownLatch to start all the submitted tasks at the same time, but the tasks don't start, they're frozen.

Am i missing something?

    import org.jboss.threads.OrderedExecutor;

    final CountDownLatch taskUnfreezer = new CountDownLatch(1);

    OrderedExecutor orderedExec = new OrderedExecutor(JBossExecutors.directExecutor(),10,JBossExecutors.directExecutor()) ;

    orderedExec.executeNonBlocking(
            new Runnable() {
        @Override
        public void run() {
  开发者_Go百科          try {
                taskUnfreezer.await();
                System.out.println("Task 1");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }           
    });

    orderedExec.executeNonBlocking(
        new Runnable() {
                @Override
                public void run() {
                    try {
                        taskUnfreezer.await();
                        System.out.println("Task 2");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }           
            });
 // Try to start all tasks
 taskUnfreezer.countDown();


You are using JBossExecutors.directExecutor(). This executor does not execute things in a separate thread, but instead executes tasks in the thread that calls execute (this is useful for testing).

Your code block on the first call to orderedExec.executeNonBlocking, since that is calling taskUnfreezer.await() in the same thread, and you will never get to taskUnfreezer.countDown()

0

精彩评论

暂无评论...
验证码 换一张
取 消