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

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

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

    java調(diào)用其他程序的問題

    ?

    大家都知道java調(diào)用cmd 用的是Runtimeexec()方法。該方法最終重啟一個進程去執(zhí)行命令,因為該方法最終調(diào)用了
    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????}
    既然是重啟了一個進程,那么就存在異步的問題,但是在很多情況在更想同步的調(diào)用Runtimeexec(),那么怎么辦呢?
    Runtime.exec()
    的返回值Process提供了waitFor()方法,可以達到阻塞新進程的目的。但是只調(diào)用waitFor(),該字線程就會
    一直阻塞,所以只調(diào)用waitFor()還是不夠的,我們需要以讀取他的輸出流的方式來阻塞住線程,當輸出流讀取結(jié)束的
    時候讓阻塞結(jié)束,代碼如下:
    ?? 通過讀取輸出流和調(diào)用process.waitFor()可以的實現(xiàn)調(diào)用Runtime.exec()的同步。
    ??
    另外還有一種情況可以使Runtime.exec()出現(xiàn)阻塞,Runtimeexec()在執(zhí)行時會產(chǎn)生兩種輸出流:錯誤輸出流和標準輸出流,當進程結(jié)束時會關(guān)閉這兩個流,在上面的代碼里只讀取了標準輸出流而沒有導(dǎo)致錯誤輸出流,由于錯誤輸出流中的數(shù)據(jù)沒有被讀取,進程就不會結(jié)束,因此調(diào)用readLine()方法時整個程序就會阻塞,因此,我們不僅要讀取標準輸出流還要讀取錯誤輸出流,由于讀取這些流都會阻塞,所以想同時讀取兩個流還不是那么容易,一種辦法就是啟動線程分別讀取不同的輸出流,另外一個辦法就是使用ProcessBuilder來執(zhí)行(前面已經(jīng)說過了Runtime.exec()最終也是調(diào)用ProcessBuilder來執(zhí)行的),因為ProcessBuilder有一個redirectErrorStream(),方法設(shè)置為redirectErrorStream(true),就可以使錯誤輸出流合并到標準輸出流,這樣我們就只需要讀取標準輸出流就可以完全解決問題了,代碼如下:
    還是也介紹下使用線程來分別讀取錯誤輸出流和標準輸出流吧:
    ?

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



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


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


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

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

    統(tǒng)計

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲人成网站在线播放2019 | 亚洲欧洲日产韩国在线| 成人无遮挡裸免费视频在线观看| 亚洲国产精品一区二区成人片国内 | 成人无码a级毛片免费| 免费不卡视频一卡二卡| 亚洲精品成人网站在线播放| 色婷婷亚洲一区二区三区| 成人A级毛片免费观看AV网站| 亚洲av无码国产综合专区| 日韩毛片免费无码无毒视频观看| 亚洲偷偷自拍高清| 最新69国产成人精品免费视频动漫 | 搡女人免费视频大全| 国产成人精品日本亚洲专| 国产成人A在线观看视频免费| 一本天堂ⅴ无码亚洲道久久| 国产高清在线精品免费软件| 亚洲av日韩av高潮潮喷无码| 亚洲视频免费在线观看| 亚洲国产精品免费在线观看| 好大好硬好爽免费视频| 国产AV日韩A∨亚洲AV电影| 亚洲人成国产精品无码| a级毛片在线视频免费观看| 91亚洲导航深夜福利| 99久久免费精品国产72精品九九| 久久精品国产亚洲AV天海翼| 亚洲午夜久久久久久久久电影网| 99久久精品免费精品国产| 亚洲av无码不卡久久| 亚洲毛片网址在线观看中文字幕| 无码国产精品一区二区免费3p| 亚洲男人天堂影院| 国产成人免费a在线资源| 三年片在线观看免费| 男人天堂2018亚洲男人天堂| 歪歪漫画在线观看官网免费阅读| 久久亚洲精品11p| 亚洲av之男人的天堂网站| 免费91最新地址永久入口|