1

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

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

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”添加到控制台。

我如何实现这一目标?

4

1 回答 1

0

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

定义一个实现 java.lang.Runnable 的新类,它的 run() 方法完成了上面显示的事情。

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

于 2012-05-18T21:15:49.560 回答