1. 程式人生 > >[七]JavaIO之 PipedInputStream 和 PipedInputStream

[七]JavaIO之 PipedInputStream 和 PipedInputStream

管道簡介

管道的含義,很久之前就已經出現

用於表示資料直接互動

它的含義與平時說的管道的含義是類似的,就是直連

JavaIO中的 PipedInputStream 和 PipedOutputStream 就是IO體系中位元組流的管道

java中,PipedOutputStream和PipedInputStream分別是管道輸出流和管道輸入流

使用管道通訊時,必須將PipedOutputStream和PipedInputStream配套使用

大致流程:

我們線上程A中向PipedOutputStream中寫入資料,這些資料會自動的傳送到與PipedOutputStream對應的PipedInputStream中,進而儲存在PipedInputStream的緩衝中;

執行緒B通過讀取PipedInputStream中的資料

對照到我上面畫的圖就是這樣:

雖然說是管道,跟現實中的含義有些類似,但是也絕對不能認為他們的資料流方向可以任意

在JavaIO中必須是一個執行緒通過PipedOutputStream 寫入資料,另外的執行緒通過與他相連線的PipedInputStream讀取資料

實現原理

PipedOutputStream 中有一個 pipedInputStream

pipedInputStream 內部有一個位元組陣列 通過initPipe方法進行初始化

呼叫PipedOutputStream的write方法,實際上呼叫的是內部pipedInputStream 的 receive方法

而 receive方法,操作的正是pipedInputStream內部的位元組陣列

所以說,只需要使用connect把管道連線起來

就可以通過PipedOutputStream 寫入資料,PipedOutputStream讀取資料

資料的中轉站,正是pipedInputStream 內的陣列

相關推薦

[十]JavaIOCharArrayReader CharArrayWriter

功能簡介 CharArrayReader  和 CharArrayWriter, 字元陣列作為資料來源的字元讀寫  CharArrayReader  CharArrayWriter  只需要記住他們的根本, CharArray 是資料來源的形式 讀 CharArrayReader 需要接受一個字元

[]JavaIO PipedInputStream PipedInputStream

管道簡介 管道的含義,很久之前就已經出現 用於表示資料直接互動 它的含義與平時說的管道的含義是類似的,就是直連 JavaIO中的 PipedInputStream 和 PipedOutputStream 就是IO體系中位元組流的管道

opencv學習(十XMLYAML檔案讀寫操作

可能大部分人到現在接觸的XML和YAML檔案很少,等以後訓練人臉模型進行人臉識別的時候用的就多了。現在先了解一下這兩種檔案型別。 XML:Extensible Markup Language,可擴充套件標記語言,標準通用語言的子集,是一種用於標記電子檔案使其具

小師妹學JavaIO:BufferBuff

[toc] # 簡介 小師妹在學習NIO的路上越走越遠,唯一能夠幫到她的就是在她需要的時候給她以全力的支援。什麼都不說了,今天介紹的是NIO的基礎Buffer。老鐵給我上個Buff。 # Buffer是什麼 小師妹:F師兄,這個Buffer是我們縱橫王者峽谷中那句:老鐵給我加個Buff的意思嗎? 當然

thinking in java (二十) ----- IO管道(PipedOutputStreamPipedInputStream

介紹 PipedInputStream和PipedOuputStream管道輸入流和管道輸出流 他的作用是讓多執行緒可以通過管道進行執行緒間的通訊,在使用管道通訊時候,必須將兩者配套使用。使用管道的大致流程是:我們在程序A中向PipedOutputStream中寫入資料,然後這

main函數啟動例程

gcc 清理 其它 運行 start call 返回 argv -a main函數和啟動例程 為什麽匯編程序的入口是_start,而C程序的入口是main函數呢?本節就來解釋這個問題。在講例 18.1 “最簡單的匯編程序”時,我們的匯編和鏈接步驟是: $ as hello

Android 音視頻深入 學習路的總結資料分享

ofo 深入 format form ack rac 相關 rec for 說個實話一開始我對基於Android如何開發音視頻很迷茫,甚至對音視頻開發都不是很明白,我看了Android 音視頻開發入門指南 http://blog.51cto.com/ticktick/195

機器學習numpymatplotlib學習(

今天我們來學習第三種畫子圖的方法。 主要使用到的模組是matplotlib.gridspec 學習過程請參考程式碼裡面的註釋: 全部程式碼如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : SundayC

Java進階篇設計模式 ----- 享元模式代理模式

前言 在上一篇中我們學習了結構型模式的組合模式和過濾器模式。本篇則來學習下結構型模式最後的兩個模式, 享元模式和代理模式。 享元模式 簡介 享元模式主要用於減少建立物件的數量,以減少記憶體佔用和提高效能。這種型別的設計模式屬於結構型模式,它提供了減少物件數量從而改善應用所需的物件結構的方式。 用通俗的話來

PipedOutStreamPipedInputStream管道流

以JDK1.8原始碼為例。  管道流的主要作用是進行兩個執行緒之間的通訊,如圖: 管道流分為輸出管道流(PipedOutStream)和輸入管道流(PipedInputStream)。如果要進行管道輸出,必須把輸出管道流連線到輸入管道流上。輸出流管道PipedOutStr

ArcGIS Python指令碼查詢選擇資料

目錄 一、構造正確的屬性查詢語句 二、建立要素圖層和表檢視 三、使用Select Layer by Attribute工具選擇要素和行 四、使用Select Layer by Location工具選擇要素 五、結合空間查詢和屬性查詢選擇要素     從

Redis學習() Redis 持久化RDBAOF

Redis 持久化提供了多種不同級別的持久化方式:一種是RDB,另一種是AOF.   RDB 持久化可以在指定的時間間隔內生成資料集的時間點快照(point-in-time snapshot)。   AOF 持久化記錄伺服器執行的所有寫操作命令,並在伺服器啟動時,通過重新執行這些命令來還原資

《uCOS51移植心得》---年前《快快樂樂跟我學51微控制器作業系統IP棧》 第五部分.NE2000網絡卡晶片驅動程式

NE2000網絡卡晶片驅動程式 巨龍公司系統整合開發部 楊屹 [email protected]  2002/10/20 引言     自從發表《uCOS51移植心得》以來,我收到了很多朋友們的來信,大家對公開源碼錶示鼓勵,謝謝大家的支援!很多人對於編寫自己的作業系統很感興趣,uCOS51是個不錯的

Android 音視訊深入 學習路的總結資料分享

說個實話一開始我對基於Android如何開發音視訊很迷茫,甚至對音視訊開發都不是很明白,我看了Android 音視訊開發入門指南 http://blog.51cto.com/ticktick/1956

《uCOS51移植心得》---年前《快快樂樂跟我學51微控制器作業系統IP棧》 第九部分在OSStart前開中斷引起的莫名其妙錯誤

在OSStart前開中斷引起的莫名其妙錯誤                                         巨龍公司VPN部 楊屹 [email protected]   2004/03/09 2004/03/07網友方呂ladderls來電詢問以下問題: 你的ucos-ii在51的

《uCOS51移植心得》---年前《快快樂樂跟我學51微控制器作業系統IP棧》 第六部分ARP協議實現原理

ARP協議實現原理           作者<[email protected]> 2002/11/01     ARP是Address Resolution Protocol的縮寫。中文譯做“地址解析協議”,本質是完成網路地址到實體地址的對映。從概念上講就是找到一個對映方法f,使得“實

小師妹學JavaIO:檔案File路徑Path

# 簡介 檔案和路徑有什麼關係?檔案和路徑又隱藏了什麼祕密?在檔案系統的管理下,建立路徑的方式又有哪些?今天F師兄帶小師妹再給大家來一場精彩的表演。 # 檔案和路徑 小師妹:F師兄我有一個問題,java中的檔案File是一個類可以理解,因為檔案裡面包含了很多其他的資訊,但是路徑Path為什麼也要單獨一個

Java IO原始碼分析(三)——PipedOutputStreamPipedInputStream

# 簡介 PipedOutputStream和PipedInputStream主要用於執行緒之間的通訊 。二者必須配合使用,也就是一段寫入,另一端接收。本質上也是一箇中間快取區,講資料快取在PipedInputStream的陣列當中,等待PipedOutputStream的讀取。 PipedInputStre

Linux基礎優化SElinuxiptables項

linux基礎優化版權聲明: ########################################################################### 本文的所有內容均來自作者劉春凱的學習總結,未經本人許可,禁止私自轉發及使用。 QQ:1151887353 E-mail:[ema

Python 基礎列表元組

bcp rtt fcn ott emd lns swe 二維數組 ttf list Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。 比如,列出班裏所有同學的名字,就可以用一個list表示: >>