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));
}

私が得るもの: 関数は約 1 秒間実行され、出力が表示されます ("Start: 0\nEnd:1000")

欲しいもの: 関数を起動し、最初の出力 ("Start: 0") を確認し、1 秒後に "End: 1000" をコンソールに追加します。

どうすればこれを達成できますか?

4

1 に答える 1

0

メソッドを新しいスレッドで実行する必要があります。

run() メソッドを使用して java.lang.Runnable を実装する新しいクラスを定義し、上記のことを行います。

次に、定義した Runnable オブジェクトを使用して java.lang.Thread のインスタンスを作成します。スレッド インスタンスで start() メソッドを呼び出してスレッドを呼び出し、ジョブを開始します。

于 2012-05-18T21:15:49.560 に答える