溫馨提示×

java怎么用CreatePipe()建立管道

小億
106
2023-11-04 11:48:12
欄目: 編程語言

在Java中,可以使用PipedInputStreamPipedOutputStream類來創建管道。

以下是使用PipedInputStreamPipedOutputStream建立管道的示例代碼:

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

public class PipeExample {
    public static void main(String[] args) {
        try {
            // 創建管道輸入流和輸出流
            PipedInputStream inputStream = new PipedInputStream();
            PipedOutputStream outputStream = new PipedOutputStream();

            // 將輸入流和輸出流連接起來
            inputStream.connect(outputStream);

            // 創建發送線程和接收線程
            Thread senderThread = new Thread(() -> {
                try {
                    // 向輸出流寫入數據
                    outputStream.write("Hello, World!".getBytes());
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });

            Thread receiverThread = new Thread(() -> {
                try {
                    byte[] buffer = new byte[1024];
                    int bytesRead = inputStream.read(buffer);
                    System.out.println("Received: " + new String(buffer, 0, bytesRead));
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });

            // 啟動發送線程和接收線程
            senderThread.start();
            receiverThread.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上代碼創建了一個管道輸入流inputStream和一個管道輸出流outputStream,然后通過調用inputStream.connect(outputStream)方法將它們連接起來。接下來,創建了一個發送線程和一個接收線程來分別向輸出流寫入數據和從輸入流讀取數據。最后,通過調用senderThread.start()receiverThread.start()方法啟動這兩個線程。

當運行以上代碼時,接收線程將從輸入流中讀取數據,并打印出來。輸出結果應為Received: Hello, World!。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女