日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Java Process.exitValue Process.waitFor()

發布時間:2024/4/17 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Process.exitValue Process.waitFor() 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://gohands.blogbus.com/logs/172834178.html

Process.exitValue() 采用非阻塞的方式返回,如果沒有立即拿到返回值,則拋出異常

Process.waitFor() 當前線程等待,如有必要,一直要等到由該 Process 對象表示的進程已經終止。但是如果我們在調用此方法時,如果不注意的話,很容易出現主線程阻塞,Process也掛起的情況。在調用waitFor() 的時候,Process需要向主線程匯報運行狀況,所以要注意清空緩存區,即InputStream和ErrorStream,在網上,很多只提到處理 InputStream,忽略了ErrorStream。以下一段代碼,貼出來,僅做參考。

  • import ?java.io.BufferedReader;??
  • import ?java.io.IOException;??
  • import ?java.io.InputStream;??
  • import ?java.io.InputStreamReader;??
  • import ?java.util.List;??
  • ??
  • public ? class ?Temp? implements ?Runnable?{??
  • ??
  • ????public ? void ?run()?{??
  • ??
  • ????????String?PATH_TO_SWF?=?"D:\\Program?Files\\SWFTools\\pdf2swf.exe" ;??
  • ????????String?fromFilename?=?"G:\\test\\read\\suanfa.pdf" ;??
  • ????????String?saveFilename?=?"G:\\test\\read\\xiaoxiaoxxx.swf" ;??
  • ??
  • ????????List?command?=?new ?java.util.ArrayList();??
  • ????????command.add(PATH_TO_SWF);??
  • ????????command.add("-o" );??
  • ????????command.add(saveFilename);??
  • ????????command.add("-t" );??
  • ????????command.add(fromFilename);??
  • ????????command.add("-s" );??
  • ????????command.add("languagedir=" ?+? "G:\\test\\read\\xpdf\\chinese-simplified" );??
  • ??
  • ????????ProcessBuilder?builder?=?new ?ProcessBuilder();??
  • ????????builder.command(command);??
  • ??
  • ????????try ?{??
  • ????????????Process?convertImgProcess?=?builder.start();??
  • ????????????final ?InputStream?is1?=?convertImgProcess.getInputStream();??
  • ????????????final ?InputStream?is2?=?convertImgProcess.getErrorStream();??
  • ????????????new ?Thread()?{??
  • ????????????????public ? void ?run()?{??
  • ????????????????????BufferedReader?br?=?new ?BufferedReader(??
  • ????????????????????????????new ?InputStreamReader(is1));??
  • ????????????????????try ?{??
  • ????????????????????????String?lineB?=?null ;??
  • ??
  • ????????????????????????while ?((lineB?=?br.readLine())?!=? null )?{??
  • ????????????????????????????if ?(lineB?!=? null )?System.out.println(lineB);??
  • ??
  • ????????????????????????}??
  • ????????????????????}?catch ?(IOException?e)?{??
  • ????????????????????????e.printStackTrace();??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}.start();??
  • ??
  • ????????????new ?Thread()?{??
  • ????????????????public ? void ?run()?{??
  • ??
  • ????????????????????BufferedReader?br2?=?new ?BufferedReader(??
  • ????????????????????????????new ?InputStreamReader(is2));??
  • ????????????????????try ?{??
  • ??
  • ????????????????????????String?lineC?=?null ;??
  • ????????????????????????while ?((lineC?=?br2.readLine())?!=? null )?{??
  • ??
  • ????????????????????????????if ?(lineC?!=? null )?System.out.println(lineC);??
  • ????????????????????????}??
  • ????????????????????}?catch ?(IOException?e)?{??
  • ????????????????????????e.printStackTrace();??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}.start();??
  • ????????????convertImgProcess.waitFor();??
  • ????????}?catch ?(Exception?e)?{??
  • ????????????System.err.println(e);??
  • ????????}??
  • ????}??
  • }?
  • ?

    總結

    以上是生活随笔為你收集整理的Java Process.exitValue Process.waitFor()的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。