2015-10-14 61 views
1

我嘗試啓動用java多個環節,但firefox被給了一個錯誤主要進程終止導致其線程teminate

的Firefox已經運行請關閉第一

因此,爲了避免這種,我在啓動鏈接之間添加了一個延遲。但是這個延遲阻礙了我的主程序。我將這段代碼製作爲線程,以便主程序不會阻塞,但退出主程序會導致此線程在沒有休眠的情況下終止。這是我的一段代碼

main{ 
runCommand run= new runCommand(); 
run.start(); 
} 

private class runCommand extends Thread{ 
     @Override 
     public void run() {   
      LaunchProcess("xdg-open https://www.google.com") 
      Thread.sleep(8000); 
      LaunchProcess("xdg-open https:www.gmail.com") 

     } 

LaunchProcess是使用runtime.getExec到exec命令的功能。上述代碼僅啓動第一個鏈接並在主程序退出時退出。如何確保退出的主程序不會終止由它啓動的線程。我不想在主程序

+0

http://stackoverflow.com/questions/22390977/allow-java-to-end-with-main-without-closing-processes-that-were-executed – assylias

+0

這不能是你的代碼,它是無效的Java語法,即使添加了缺少的'LaunchProcess'。另外,沒有標準的包或對象'runtime';有'java.lang.Runtime',它具有方法'getRuntime()'和'exec()',但沒有'getExec'。但是你描述的應該是有效的;如果任何其他非守護線程仍然存在,則從Java中的主線程返回不會終止JVM。發佈實際的代碼,儘可能簡單,以展示您的問題。 –

回答

0

你想要什麼補充睡眠是join()

join方法允許一個線程等待另一個完成。

查看更多about join()here

+0

我想讓主線程退出,並由它啓動的線程應該獨立執行,這在java中是possbile? – chenna

+0

如果主線程退出,則VM進程退出,並與所有線程一起退出。然而,join()將使主線程休眠,直到被調用的線程完成。這不是你想要的嗎? –