J2SE綜合:在Java程序中截獲控制臺輸出 (2)

發表于:2008-05-08來源:作者:點擊數: 標簽:javaJAVAJava程序控制臺
關鍵字: Java 程序中截獲控制臺輸出1.3注意事項三 如果一個寫操作在PipedOutputStream上執行,同時最近從對應PipedInputStream讀取的線程已經不再活動(通過Thread.isAlive()檢測),則寫操作將拋出一個IOException異常。假定有兩個線程w和r,w向PipedOutput
關鍵字:Java程序中截獲控制臺輸出1.3 注意事項三
如果一個寫操作在PipedOutputStream上執行,同時最近從對應PipedInputStream讀取的線程已經不再活動(通過 Thread.isAlive()檢測),則寫操作將拋出一個IOException異常。假定有兩個線程w和r,w向 PipedOutputStream寫入數據,而r則從對應的PipedInputStream讀取。下面一系列的事件將導致w線程在試圖寫入 PipedOutputStream時遇到IOException異常:

   1. 寫操作線程w已經創建,但r線程還不存在。
   2. w向PipedOutputStream寫入數據。
   3. 讀線程r被創建,并從PipedInputStream讀取數據。
   4. r線程結束。
   5. w企圖向PipedOutputStream寫入數據,發現r已經結束,拋出IOException異常。

實際上,這個問題不象第二個問題那樣棘手。和多個讀線程/單個寫線程的情況相比,也許在應用中有一個讀線程(作為響應請求的服務器)和多個寫線程(發出請求)的情況更為常見。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97