2013-10-23 47 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

相关问题