溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在java中利用管道流發(fā)送線程

發(fā)布時間:2021-04-21 16:52:58 來源:億速云 閱讀:287 作者:Leah 欄目:編程語言

怎么在java中利用管道流發(fā)送線程?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Java是什么

Java是一門面向?qū)ο缶幊陶Z言,可以編寫桌面應用程序、Web應用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應用程序。

1.概念

管道流主要用于連接兩個線程的通信。管道流也分為字節(jié)流(PipedInputStream、PipedOutputStream)和字符流(PipedReader、PipedWriter)。

2.使用事項

第一,管道流僅用于多個線程之間傳遞信息,若用在同一個線程中可能會造成死鎖;

第二,管道流的輸入輸出是成對的,一個輸出流只能對應一個輸入流,使用構造函數(shù)或者connect函數(shù)進行連接;

第三,一對管道流包含一個緩沖區(qū),其默認值為1024個字節(jié),若要改變緩沖區(qū)大小,可以使用帶有參數(shù)的構造函數(shù);

第四,管道的讀寫操作是互相阻塞的,當緩沖區(qū)為空時,讀操作阻塞;當緩沖區(qū)滿時,寫操作阻塞;

第五,管道依附于線程,因此若線程結束,則雖然管道流對象還在,仍然會報錯“read dead end”;

第六,管道流的讀取方法與普通流不同,只有輸出流正確close時,輸出流才能讀到-1值。

3.實例

public class Sender implements Runnable
{
private PipedOutputStream out = new PipedOutputStream();
public PipedOutputStream getOutputStream()
{
return out;
}
public void run()
{
String str = "Receiver, 你好!";
try
{
out.write(str.getBytes()); // 向管道流中寫入數(shù)據(jù)(發(fā)送)
out.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}

關于怎么在java中利用管道流發(fā)送線程問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI