2013-10-23 85 views
1

我想在不影響主線程執行的情況下,在單獨的命令窗口中啓動新線程的執行。Java:如何在主線程的單獨命令窗口中打開新線程的執行?

我有這樣的事情:它使用調用Runtime.getRuntime

public static void main(String args[]){ 
    NewThread n = new NewThread(); 
    Thread t = new Thread(n); 
    t.start(); //Here I want to display the execution of t in separate command prompt. 

} 

class NewThread implements Runnable{ 
public void run(){ 
    //.... 
} 
} 

能怎麼辦?()EXEC()?請幫助..謝謝。

+0

可能重複的[Java:如何從主程序/類獨立運行線程?](http://stackoverflow.com/questions/4005350/java-how-to-run-thread-separately-from-main-程序級) –

+0

打開一個新的命令窗口將是操作系統特定的。那樣你覺得可以嗎?如果是這樣,那麼你在使用什麼操作系統 –

+0

「不影響主線程執行」是什麼意思?你是否試圖啓動兩個進程? –

回答

0

作爲使用Runtime.exec的單獨過程啓動/bin/sh。如果您想與該子進程進行通信,請使用ProcessBuilder。閱讀java-process-with-input-output-stream的答案。

+0

但我應該如何在另一個終端顯示其輸出? – Winn

+0

hmm bin/sh是不夠的......你必須啓動'gnome-terminal -e command'命令,其中command是一個與父進程通信的程序。看起來像'gnome-terminal'不提供對其啓動命令的「stdin」訪問。 –

+0

我覺得java在這裏有限制。它應該提供輕鬆分開執行線程。可能是我會嘗試這一個。讓我們來看看。謝謝阿列克謝。 – Winn

-1

您可以使用setDaemon()方法更改Thread守護程序屬性。

+0

這與問題無關。 –

+0

爲什麼?據我所知問題是如何從簡單的線程在java中創建一個守護進程,並且此線程不能在主結束執行後死亡。所以他需要創建一個守護進程。 –

+0

您不僅誤解了這個問題,而且您對Thread.setDaemon()的作用的理解似乎也是錯誤的。你應該爲此閱讀javadoc。 –

1

使用Swing並在裏面創建一個文本區域的窗口,如java-swing-programming-buffered。這樣你就不需要啓動外部進程。

+0

謝謝..這可能是一種方法。但抱歉,我有限制,無法使用GUI來顯示輸出。 – Winn

相關問題