Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我怎么知道代码的哪一部分没有终止?_Java_Eclipse_Siddhi - Fatal编程技术网

Java 我怎么知道代码的哪一部分没有终止?

Java 我怎么知道代码的哪一部分没有终止?,java,eclipse,siddhi,Java,Eclipse,Siddhi,我正在运行从Siddhi示例复制的以下代码。当到达代码的最后一行时,Eclipse指示某些东西仍在运行。我怎样才能知道它是什么并关闭它 请注意,我更感兴趣的是一般如何跟踪这样的问题,而不是在这个特定的案例中,因为我在其他库中也遇到过同样的情况 SiddhiManager siddhiManager = new SiddhiManager(); String executionPlan = "@config(async = 'true')define stream cseEventStream

我正在运行从Siddhi示例复制的以下代码。当到达代码的最后一行时,Eclipse指示某些东西仍在运行。我怎样才能知道它是什么并关闭它

请注意,我更感兴趣的是一般如何跟踪这样的问题,而不是在这个特定的案例中,因为我在其他库中也遇到过同样的情况

SiddhiManager siddhiManager = new SiddhiManager();

String executionPlan = "@config(async = 'true')define stream cseEventStream (symbol string, price float, volume long);"
        + "@info(name = 'query1') from cseEventStream[volume < 150] select symbol,price insert into outputStream ;";

ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(executionPlan);

executionPlanRuntime.addCallback("query1", new QueryCallback() {

        @Override
        public void receive(long timeStamp, Event[] inEvents,
                Event[] removeEvents) {
            StringBuilder sb = new StringBuilder();
            sb.append("Events{ @timeStamp = ").append(timeStamp).
                    append(", inEvents = ").append(Arrays.deepToString(inEvents)).
                    append(", RemoveEvents = ").append(Arrays.deepToString(removeEvents)).append(" }");
            System.out.println(sb.toString());

        }
});

executionPlanRuntime.start();   

InputHandler inputHandler = executionPlanRuntime.getInputHandler("cseEventStream");
inputHandler.send(new Object[]{"IBM", 700f, 100l});
inputHandler.send(new Object[]{"WSO2", 60.5f, 200l});
inputHandler.send(new Object[]{"GOOG", 50f, 30l});
inputHandler.send(new Object[]{"IBM", 76.6f, 400l});
inputHandler.send(new Object[]{"WSO2", 45.6f, 50l});
System.out.println("Done feeding events");
Thread.sleep(500);
executionPlanRuntime.shutdown();
siddhiManager.shutdown();
System.out.println("Shutdown");

启动VisualVM。附加到进程。进行线程转储。注意,您的IDE还可以附加到正在运行的进程,甚至可以在debug more中执行进程。然而,这更复杂,更不一般,我尝试在Eclipse的调试模式下执行它。线程窗口显示本地主机上的SiddhiTest[Java Application]com.myproject.examples.SiddhiTest:39407 thread[d94bfb16-cd5a-4f9f-bb32-a5df4fe31b43thread-0]运行线程[DestroyJavaVM]Running/usr/lib/jvm/Java-7-openjdk-amd64/bin/Java Jun 16,2015,7:19:10 PM。这是查找问题的正确位置吗?不要在评论中发布附加信息,将其添加到问题中。有人应该能够从问题中获得回答问题的所有必要信息。此外,这不是一个线程转储,它只是一个线程列表。