程序阻塞解決方案

2021-08-19 20:39:12 字數 1355 閱讀 6792

我的畢設做了個視覺化介面,用來展示我的**過程,做起來一波三折啊。記錄一下用runtime.getruntime().exec(s)時出現的問題。2023年5月10日13:44:54

一、執行一些比較複雜的語句時無法執行,直接退出來

解決方法:在語句前面加 cmd /c

原因我也不知道,很奇妙,浪費那麼多時間。

二、呼叫runtime.getruntime().exec(s)命令程式阻塞

作為乙個小白,一開始碰到這個問題,慌的要死無法解決,去找老師檢查進度,老師說我記憶體4g太小,得加記憶體條,重點是走大創流程報銷,哈哈哈開心,趙老師真是乙個體貼學生的好老師!!!

然而裝了8g記憶體條,問題依然沒有解決,老樣子一丁點改善都沒有,我才發現問題沒有那麼簡單,不是記憶體條的事。

執行某些命令的時候,如果cmds裡的命令在後台列印出許多內容的話,process的 inputstream和errorstream的緩衝區會被填滿,這個時候如果你不吧內容讀出來的話就會阻塞在那裡,而執行的程序因為內容列印不出來也會阻塞在那裡不動。所以這種情況最好是開兩個單獨的執行緒去分別讀

inputstream和

errorstream的內容。

直接貼解決**

執行命令的**

process p = runtime.getruntime().exec(commandstr);

streamgobbler errorgobbler = new streamgobbler(p.geterrorstream(), "error");            

errorgobbler.start(); 

streamgobbler outgobbler = new streamgobbler(p.getinputstream(), "stdout");  

outgobbler.start(); 

streamgobbler類

public class streamgobbler extends thread  

streamgobbler(inputstream is, string type, outputstream redirect)  

public void run()  

if (pw != null)  

pw.flush();  

} catch (ioexception ioe) finally catch (ioexception e)

try catch (ioexception e)

// fileutil.close(br);  

// fileutil.close(isr);  

}  }  

殭屍程序 孤兒程序 解決方案

我們有這樣乙個問題 孤兒程序和殭屍程序,怎麼產生的?有什麼危害?怎麼去預防?下面是針對此問題的總結與概括。正常情況下 子程序由父程序建立,子程序再建立新的程序。父子程序是乙個非同步過程,父程序永遠無法 子程序的結束,所以,當子程序結束後,它的父程序會呼叫wait 或waitpid 取得子程序的終止狀...

nohup 程序自動停止解決方案

原理 unix linux下一般想讓某個程式在後台執行,很多都是使用 在程式結尾來讓程式自動執行。使用ssh遠端linux伺服器啟動應用,都是使用nohup 命令,結果關閉ssh應用仍然結束通話了。但是有時候在這一步會有問題,當把終端關閉後,程序會自動被關閉,察看nohup.out可以看到在關閉終端...

mysql 解決方案 Mysql解決方案

mysql解決方案 一 centos7安裝mysql5.7 wget rpm uvh mysql80 community release el7 3.noarch.rpm yum repolist all grep mysql 發現預設mysql8.0是預設安裝的,然而我們要安裝的是mysql5.7...