<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java調用其他程序的問題

    ?

    大家都知道java調用cmd 用的是Runtimeexec()方法。該方法最終重啟一個進程去執行命令,因為該方法最終調用了
    ProcessBuilder

    1?public?Process?exec(String[]?strings,?String[]?strings_2_,?File?file)
    2????throws?IOException?{
    3????return?new?ProcessBuilder(strings).environment(strings_2_).directory
    4???????????(file).start();
    5????}
    既然是重啟了一個進程,那么就存在異步的問題,但是在很多情況在更想同步的調用Runtimeexec(),那么怎么辦呢?
    Runtime.exec()
    的返回值Process提供了waitFor()方法,可以達到阻塞新進程的目的。但是只調用waitFor(),該字線程就會
    一直阻塞,所以只調用waitFor()還是不夠的,我們需要以讀取他的輸出流的方式來阻塞住線程,當輸出流讀取結束的
    時候讓阻塞結束,代碼如下:
    ?? 通過讀取輸出流和調用process.waitFor()可以的實現調用Runtime.exec()的同步。
    ??
    另外還有一種情況可以使Runtime.exec()出現阻塞,Runtimeexec()在執行時會產生兩種輸出流:錯誤輸出流和標準輸出流,當進程結束時會關閉這兩個流,在上面的代碼里只讀取了標準輸出流而沒有導致錯誤輸出流,由于錯誤輸出流中的數據沒有被讀取,進程就不會結束,因此調用readLine()方法時整個程序就會阻塞,因此,我們不僅要讀取標準輸出流還要讀取錯誤輸出流,由于讀取這些流都會阻塞,所以想同時讀取兩個流還不是那么容易,一種辦法就是啟動線程分別讀取不同的輸出流,另外一個辦法就是使用ProcessBuilder來執行(前面已經說過了Runtime.exec()最終也是調用ProcessBuilder來執行的),因為ProcessBuilder有一個redirectErrorStream(),方法設置為redirectErrorStream(true),就可以使錯誤輸出流合并到標準輸出流,這樣我們就只需要讀取標準輸出流就可以完全解決問題了,代碼如下:
    還是也介紹下使用線程來分別讀取錯誤輸出流和標準輸出流吧:
    ?

    好了,今天就先寫到這里吧。



    posted on 2008-10-09 13:32 linda 閱讀(1787) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    <2008年10月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統計

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 在线人成免费视频69国产| 亚洲.国产.欧美一区二区三区| 国产va免费精品| 免费永久在线观看黄网站| 亚洲AV无码一区二区三区久久精品| 日本免费网址大全在线观看| 亚洲视频一区在线观看| 久久国产精品国产自线拍免费| 亚洲永久精品ww47| 在线观看免费黄网站| 在线a亚洲v天堂网2019无码| AAAAA级少妇高潮大片免费看| 亚洲国产精品综合久久一线| 免费无码婬片aaa直播表情| 亚洲福利在线播放| 黄色视屏在线免费播放| 亚洲人成网站在线观看播放| 国产一级片免费看| 亚洲国产夜色在线观看| 成年女人免费视频播放77777 | 国产精品亚洲精品日韩动图 | 成年美女黄网站18禁免费| 亚洲精品宾馆在线精品酒店| 亚洲国产精品狼友中文久久久| 精品无码一级毛片免费视频观看| 国产成人精品日本亚洲| 亚洲视频在线观看免费视频| 亚洲色欲色欱wwW在线| 亚洲精品456播放| 99视频在线精品免费| 国产99在线|亚洲| 亚洲精品A在线观看| 鲁大师在线影院免费观看| 亚洲H在线播放在线观看H| 亚洲精品人成无码中文毛片| 久久久久久影院久久久久免费精品国产小说 | 亚洲伊人色欲综合网| 精品一区二区三区无码免费视频| 亚洲伦理中文字幕| 亚洲一级Av无码毛片久久精品| 99xxoo视频在线永久免费观看|