为什么要在主线程上休眠才能运行Camel示例

时间:2014-01-23 07:50:00

标签: java multithreading apache-camel

我是Camel的新手,我正在努力了解它是如何运作的。

我尝试了以下示例:

public class CamelMainTest {

        public static void main(String args[]) throws Exception {
            CamelContext context = new DefaultCamelContext();
            context.addRoutes(new RouteBuilder() {
                public void configure() {
                    from("file:d:\\inbox\\json?noop=true").to("file:d:\\outbox");
                }
            });
            context.addRoutes(getFileRoute());
            context.start();
    //      Thread.sleep(50000);
            context.stop();

}

我正在将文件从一个位置复制到另一个位置,但它失败了。

当我从第Thread.sleep(50000);行删除评论时,它可以正常工作。

任何人都可以解释为什么需要在主线程上睡觉吗?

2 个答案:

答案 0 :(得分:2)

我认为CamelContext作为一个单独的线程运行。如果您发表评论Thread.sleep(50000);,那么contextstart()并立即stop()会导致错误投放?

如果Thread.sleep(50000);上下文将start()且主线程处于休眠状态,context将完成作为生成线程的作业,然后stop()

答案 1 :(得分:1)