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

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

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

    posts - 15,  comments - 8,  trackbacks - 0

    前言:Java 的類庫日益龐大,所包含的類和接口也不計其數。但其中有一些非常重要的類和接口,是Java類庫中的核心部分。常見的有String、Object、 Class、Collection、ClassLoader、Runtime、Process...,熟悉這些類是學好Java的基礎。而這些類一般不容 易理解,需要做深入的研究和實踐才能掌握。下面是我對這些類理解和使用的一些總結。歡迎你在閱讀后將你寶貴的意見和讀后感留下!

     

    一、概述
          Process類是一個抽象類(所有的方法均是抽象的),封裝了一個進程(即一個執行程序)。
          Process 類提供了執行從進程輸入、執行輸出到進程、等待進程完成、檢查進程的退出狀態以及銷毀(殺掉)進程的方法。
          ProcessBuilder.start() 和 Runtime.exec 方法創建一個本機進程,并返回 Process 子類的一個實例,該實例可用來控制進程并獲取相關信息。

          創建進程的方法可能無法針對某些本機平臺上的特定進程很好地工作,比如,本機窗口進程,守護進程,Microsoft Windows 上的 Win16/DOS 進程,或者 shell 腳本。創建的子進程沒有自己的終端或控制臺。它的所有標準 io(即 stdin,stdout,stderr)操作都將通過三個流 (getOutputStream(),getInputStream(),getErrorStream()) 重定向到父進程。父進程使用這些流來提供到子進程的輸入和獲得從子進程的輸出。因為有些本機平臺僅針對標準輸入和輸出流提供有限的緩沖區大小,如果讀寫子 進程的輸出流或輸入流迅速出現失敗,則可能導致子進程阻塞,甚至產生死鎖。

          當沒有 Process 對象的更多引用時,不是刪掉子進程,而是繼續異步執行子進程。

     

    二、API預覽
     destroy()
       殺掉子進程。
     exitValue()
       返回子進程的出口值。
     InputStream getErrorStream()
       獲得子進程的錯誤流。
     InputStream getInputStream()
       獲得子進程的輸入流。
     OutputStream getOutputStream()
       獲得子進程的輸出流。
     waitFor()
       導致當前線程等待,如果必要,一直要等到由該 Process 對象表示的進程已經終止。

     

    三、如何創建Process對象,一般有一下兩種方法:

     

    1、每個 ProcessBuilder 實例管理一個進程屬性集。start() 方法利用這些屬性創建一個新的 Process 實例。start() 方法可以從同一實例重復調用,以利用相同的或相關的屬性創建新的子進程。(ProcessBuilder這個是JDK5中新添加的final類,詳細請參 看“深入研究java.lang.ProcessBuilder類”一文。

     

    2、Runtime.exec() 方法創建一個本機進程,并返回 Process 子類的一個實例。詳細請參看“深入研究java.lang.Runtime類”一文。

     

    四、官方API文檔。

     

    java.lang
    類 Process

    java.lang.Object
    繼承者java.lang.Process

    public abstract class Process
    extends Object

    ProcessBuilder.start()Runtime.exec 方法創建一個本機進程,并返回 Process 子類的一個實例,該實例可用來控制進程并獲取相關信息。Process 類提供了執行從進程輸入、執行輸出到進程、等待進程完成、檢查進程的退出狀態以及銷毀(殺掉)進程的方法。

    創建進程的方法可能無法針對某些本機平臺上的特定進程很好地工作,比如,本機窗口進程,守護進程,Microsoft Windows 上的 Win16/DOS 進程,或者 shell 腳本。創建的子進程沒有自己的終端或控制臺。它的所有標準 io(即 stdin,stdout,stderr)操作都將通過三個流 (getOutputStream(),getInputStream()getErrorStream()) 重定向到父進程。父進程使用這些流來提供到子進程的輸入和獲得從子進程的輸出。因為有些本機平臺僅針對標準輸入和輸出流提供有限的緩沖區大小,如果讀寫子進程的輸出流或輸入流迅速出現失敗,則可能導致子進程阻塞,甚至產生死鎖。

    當沒有 Process 對象的更多引用時,不是刪掉子進程,而是繼續異步執行子進程。

    對于帶有 Process 對象的 Java 進程,沒有必要異步或并發執行由 Process 對象表示的進程。

    從以下版本開始:
    JDK1.0
    另請參見:
    ProcessBuilder, Runtime.exec(String[], String[], File)

    構造方法摘要
    Process()
               
     
    方法摘要
    abstract  void destroy()
              殺掉子進程。
    abstract  int exitValue()
              返回子進程的出口值。
    abstract  InputStream getErrorStream()
              獲得子進程的錯誤流。
    abstract  InputStream getInputStream()
              獲得子進程的輸入流。
    abstract  OutputStream getOutputStream()
              獲得子進程的輸出流。
    abstract  int waitFor()
              導致當前線程等待,如果必要,一直要等到由該 Process 對象表示的進程已經終止。
     
    從類 java.lang.Object 繼承的方法
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    構造方法詳細信息

    Process

    public Process()

    方法詳細信息

    getOutputStream

    public abstract OutputStream getOutputStream()
    獲得子進程的輸出流。輸出流被傳送給由該 Process 對象表示的進程的標準輸入流。

    實現注意事項:對輸出流進行緩沖是一個好主意。

    返回:
    連接到子進程正常輸入的輸出流。

    getInputStream

    public abstract InputStream getInputStream()
    獲得子進程的輸入流。輸入流獲得由該 Process 對象表示的進程的標準輸出流。

    實現注意事項:對輸入流進行緩沖是一個好主意。

    返回:
    連接到子進程正常輸出的輸入流。
    另請參見:
    ProcessBuilder.redirectErrorStream()

    getErrorStream

    public abstract InputStream getErrorStream()
    獲得子進程的錯誤流。錯誤流獲得由該 Process 對象表示的進程的錯誤輸出流傳送的數據。

    實現注意事項:對輸入流進行緩沖是一個好主意。

    返回:
    連接到子進程錯誤流的輸入流。
    另請參見:
    ProcessBuilder.redirectErrorStream()

    waitFor

    public abstract int waitFor()
    throws InterruptedException
    導致當前線程等待,如果必要,一直要等到由該 Process 對象表示的進程已經終止。如果已終止該子進程,此方法立即返回。如果沒有終止該子進程,調用的線程將被阻塞,直到退出子進程。

    返回:
    進程的出口值。根據慣例,0 表示正常終止。
    拋出:
    InterruptedException - 如果當前線程在等待時被另一線程 中斷,則停止等待,拋出 InterruptedException

    exitValue

    public abstract int exitValue()
    返回子進程的出口值。

    返回:
    Process 對象表示的子進程的出口值。根據慣例,值 0 表示正常終止。
    拋出:
    IllegalThreadStateException - 如果此 Process 對象表示的子進程尚未終止。

    destroy

    public abstract void destroy()
    殺掉子進程。強制終止此 Process 對象表示的子進程。

     

    posted on 2008-06-04 20:47 lvq810 閱讀(931) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 久久亚洲sm情趣捆绑调教| 亚洲综合亚洲综合网成人| 亚洲成a人片在线网站| 日韩中文字幕免费视频| 亚洲av无码潮喷在线观看| 精品国产污污免费网站| 久久精品国产亚洲AV网站| 久久免费的精品国产V∧| 久久亚洲精品国产精品| 亚洲男人的天堂www| 国产自国产自愉自愉免费24区| 亚洲中文字幕无码专区| 久久久久女教师免费一区| 亚洲夜夜欢A∨一区二区三区| 国产在线播放线91免费| 久久亚洲国产视频| 亚洲精品视频免费看| 亚洲日韩乱码中文字幕| 国产成人3p视频免费观看| 久久久久久噜噜精品免费直播 | 91精品啪在线观看国产线免费| 亚洲AV无码专区电影在线观看| 日韩一品在线播放视频一品免费| 久久精品国产这里是免费| 四虎影视久久久免费观看| jiz zz在亚洲| 亚洲精品国产福利在线观看| 亚洲精品国产高清不卡在线| 妞干网手机免费视频| 91精品国产免费入口| 精品乱子伦一区二区三区高清免费播放| 国产亚洲中文日本不卡二区 | 精品亚洲A∨无码一区二区三区| 亚洲精品国产高清嫩草影院| 成人毛片18女人毛片免费| 无码人妻一区二区三区免费n鬼沢| 四虎国产精品成人免费久久| 亚洲日韩国产二区无码| 亚洲国产成人超福利久久精品| 亚洲成av人在线视| 久久久久无码专区亚洲av|