2012-04-12 65 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()方法調用 線程來啓動工作。