Eclipse MessageConsole似乎被阻止 - 需要异步输出

时间:2012-04-12 12:57:24

标签: java eclipse

我想将程序的输出写入控制台,但是在某种程度上,控制台似乎被阻止/控制台甚至在功能完成之前都没有显示。

以下是一些示例代码,它显示了完全相同的行为:

public void startConsole() throws IOException { 
    long start = System.currentTimeMillis();
    MessageConsole console = new MessageConsole("TestConsole", null);
    ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] {console});
    ConsolePlugin.getDefault().getConsoleManager().showConsoleView(console);        
    MessageConsoleStream stream = console.newMessageStream();
    stream.setActivateOnWrite(true);        
    stream.println("Start: " + (System.currentTimeMillis()-start));
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    stream.println("End: " + (System.currentTimeMillis()-start));
}

我得到的:该函数运行大约一秒钟,我看到输出("开始:0 \ n结束:1000")

我想要的是:我启动该功能,并看到第一个输出("开始:0"),一秒钟之后,我想要"结束:1000"要添加到控制台。

我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

您需要在新线程中运行该方法。

定义一个用java实现java.lang.Runnable的新类 它的run()方法执行上面显示的内容。

然后,使用Runnable创建java.lang.Thread的实例 您定义的对象。通过调用来启动工作 线程通过在线程实例上调用start()方法。