国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Java技巧使用管道數(shù)據(jù)流傳送數(shù)據(jù)

2019-11-18 13:11:18
字體:
供稿:網(wǎng)友

  java I/O系統(tǒng)是建立在數(shù)據(jù)流概念之上的,在UNIX操作系統(tǒng)中有一個類似的概念很流行,那就是管道,它具有將一個程序的輸出當(dāng)作另一個程序的輸入的能力。
  
  Java為這種管道概念提供了PipedInputStream和PipedOutputStream類。將這兩者結(jié)合在一起,它們答應(yīng)一個Java組件輸出數(shù)據(jù)到輸出流,而另一個組件將這個輸出流當(dāng)作輸入流來讀取。
  
  舉個例子可以說明,比如一個用來記錄應(yīng)用程序日志信息的組件和一個用來顯示流數(shù)據(jù)動態(tài)報表的組件。通過給日志記錄組件提供PipedOutputStream,給報表組件提供相應(yīng)的PipedInputStream,這兩個組件就不用知道對方的情況而可以相互通信。
  
  最簡單的情況下,代碼段如下所示:
  
  importjava.io.*;
  
  public class Foo {
  
  static public void main(String[] args) throwsIOException {
  PipedOutputStream pout = newPipedOutputStream();
  PipedInputStream= new PipedInputStream(pout);
  for(int i=0; i 〈 100; i++) {
  pout.write((byte)i );
  }
  pout.close();
  
  int j=0;
  while( (j = pin.read()) != -1)
  {
  System.err.PRintln(j);
  }
  pin.close();
  }
  }
  上面的代碼中,一定要記得調(diào)用close()以關(guān)閉輸出流"pout",否則第二輪循環(huán)永遠(yuǎn)也不會結(jié)束。
  
  這個粗泛的例子并不是正常的可用的代碼。隨著第一輪循環(huán)數(shù)量越來越大,PipedOutputStream中的緩沖將會用盡,從而出現(xiàn)問題,比如它在等待某些程序從流里面刪除數(shù)據(jù)時會導(dǎo)致線程死鎖。
  
  這就是為什么管道流的Javadoc中聲明了PipedInputStream和PipedOutputStream必須用在多線程環(huán)境里面的原因。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 电白县| 茂名市| 苍南县| 平邑县| 舒兰市| 宁南县| 广丰县| 蛟河市| 宝清县| 砚山县| 中山市| 犍为县| 呼玛县| 吴忠市| 酒泉市| 洞口县| 双桥区| 郸城县| 长宁区| 左贡县| 汝阳县| 清原| 股票| 青浦区| 崇仁县| 南靖县| 北海市| 榕江县| 德令哈市| 文水县| 南平市| 彭水| 和平县| 蒙山县| 宝坻区| 北流市| 达孜县| 华亭县| 朝阳区| 民丰县| 铜梁县|