<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
    主站蜘蛛池模板: 国产成人免费福利网站| 国产免费不卡视频| 又粗又硬又大又爽免费视频播放| 亚洲中文字幕在线无码一区二区| 亚洲国产成人一区二区三区| 日韩免费在线中文字幕| 亚洲精品乱码久久久久久不卡| 无码 免费 国产在线观看91| 亚洲国产日韩成人综合天堂| 国产精品成人免费观看| 亚洲国产另类久久久精品| 久久精品免费观看国产| 国产免费私拍一区二区三区| 亚洲综合色丁香麻豆| 免费福利在线播放| 久久亚洲色一区二区三区| 两性色午夜免费视频| 国产自产拍精品视频免费看| 美女黄色毛片免费看| 91频在线观看免费大全| 亚洲午夜成人精品无码色欲| 永久中文字幕免费视频网站| 久久亚洲精品中文字幕| ssswww日本免费网站片| 亚洲av综合色区| 成人福利免费视频| 美女视频黄a视频全免费网站色 | 亚洲一区综合在线播放| 1000部国产成人免费视频| 亚洲日韩精品无码专区加勒比| 免费在线观看一级毛片| 今天免费中文字幕视频| 亚洲中文字幕AV每天更新| 久久99亚洲综合精品首页| 久久青草精品38国产免费| 7777久久亚洲中文字幕| 国产亚洲精久久久久久无码77777| 免费视频成人片在线观看| 亚洲乱人伦中文字幕无码| 国产亚洲色视频在线| 在线视频精品免费|