本節課我學習的主要內容有:
1.管道流
管道流:
用于連接輸入流和輸出流,
一般運用在兩個不同執行緒之間傳輸資料,
這里的input是對應從管道中得到資料并輸入到別的地方,
output對應的是從別的地方得到資料并輸出資料到管道中,
PipedTest01類(測驗管道類):
package LessonForIO03;
import java.io.*;
public class PipedTest01
{
//生產資料的方法,將資料寫入管道,
public static void outputTo(PipedOutputStream pos)
{
try
{
for (int i=0; i<20; i++)
{
pos.write(i);
pos.flush();//每output一次,重繪緩沖區,目的是即刻寫出,
System.out.println("寫出資料 "+i+" 到管道中去,");
Thread.sleep(1000);// 每寫入一次,該執行緒就停止一秒,避免寫入過快,不明顯,
}
pos.close();
} catch (IOException | InterruptedException e)
{
e.printStackTrace();
}
}
//取走資料的方法,將管道中的資料取出.
public static void inputTo(PipedInputStream pis)
{
try
{
int length;
while ((length = pis.read()) != -1)
{
System.out.println("從管道中讀到的資料:"+length);
}
} catch (IOException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
//通過建構式來組裝管道:
System.out.println("通過建構式來組裝管道:");
PipedInputStream pis1 = new PipedInputStream();
PipedOutputStream pos1 = null;
try
{
pos1 = new PipedOutputStream(pis1);//這樣的話不能用lambda運算式來初始化new Thread
} catch (IOException e)
{
e.printStackTrace();
}
//通過connect方法來組裝管道:
System.out.println("通過connect方法來組裝管道:");
PipedInputStream pis2 = new PipedInputStream();
PipedOutputStream pos2 = new PipedOutputStream();
try
{
pos2.connect(pis2);//他倆倒過來連也行,建議使用,
} catch (IOException e)
{
e.printStackTrace();
}
new Thread(()->{outputTo(pos2);}).start();
new Thread(()->{inputTo(pis2);}).start();
}
}
本篇部分文字來源于:
咕嘟咖啡楊海濱老師 — 《java編程語言高級特性》
在這里十分感謝老師能夠給我帶來學習的激情,
2020.11.9
本文章是本人學習筆記,不進行任何商用所以不支持轉載請理解!也請別拿去商用!
如果覺得對你有幫助那么歡迎你隨時來回顧!
只為記錄本人學習歷程,
畢
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/210066.html
標籤:其他
上一篇:RTSP/GB28181/Ehome協議/HIKSDK視頻平臺EasyCVR國標設備接入視頻流播放不穩定問題排查
