2012-04-12 39 views
1

我想将程序的输出写入控制台,但在某些方面控制台似乎被阻塞/控制台甚至在函数完成之前不显示。Eclipse MessageConsole似乎被阻塞 - 需要异步输出

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

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 \ NEND:1000” )

我想要的是:我启动函数,看到第一个输出(“Start:0”),一秒钟后,我想要“End:1000”添加到控制台。

我该如何做到这一点?

回答

0

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

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

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