日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java Process.exitValue Process.waitFor()

發(fā)布時(shí)間:2024/4/17 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Process.exitValue Process.waitFor() 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

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

Process.waitFor() 當(dāng)前線程等待,如有必要,一直要等到由該 Process 對(duì)象表示的進(jìn)程已經(jīng)終止。但是如果我們在調(diào)用此方法時(shí),如果不注意的話,很容易出現(xiàn)主線程阻塞,Process也掛起的情況。在調(diào)用waitFor() 的時(shí)候,Process需要向主線程匯報(bào)運(yùn)行狀況,所以要注意清空緩存區(qū),即InputStream和ErrorStream,在網(wǎng)上,很多只提到處理 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);??
  • ????????}??
  • ????}??
  • }?
  • ?

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。