JAVA/포스팅

자바 PipedWriter

짜집퍼박사(짜박) 2023. 11. 26. 13:50

PipedWriter 클래스는 Java I/O 패키지에서 파이프 스트림을 이용한 스레드 간 통신을 지원하는 클래스 중 하나입니다. 파이프 스트림은 한 스레드에서 출력한 데이터를 다른 스레드에서 입력 받을 수 있게 해주는 특별한 형태의 스트림입니다.

PipedWriter는 주로 한 스레드에서 다른 스레드로 데이터를 전송할 때 사용됩니다. 여러 스레드 간의 통신이 필요한 상황에서 사용됩니다. PipedWriter는 PipedReader와 함께 사용되어 데이터를 파이프를 통해 전송할 수 있게 해줍니다.

PipedWriter의 중요한 생성자

 

1. PipedWriter() 생성자

기본 버퍼 크기로 PipedWriter 객체를 생성합니다.

 

2. PipedWriter(PipedReader snk) 생성자

PipedReader와 연결된 PipedWriter 객체를 생성합니다.

 

PipedWriter의 주요 메서드

 

1. connect(PipedReader snk) 메서드

PipedWriter와 PipedReader를 연결합니다. 이를 통해 두 스트림 사이에 파이프가 형성되어 데이터를 주고받을 수 있습니다.

 

2. write(int c) 메서드

스트림에 한 문자를 씁니다.

 

3. write(char[] cbuf, int off, int len) 메서드

스트림에 주어진 버퍼에서 일부 또는 모든 문자를 씁니다.

 

4. write(String str, int off, int len) 메서드

스트림에 주어진 문자열의 일부 또는 모든 문자를 씁니다.

 

5. flush() 메서드

스트림을 비웁니다.

 

6. close() 메서드

스트림을 닫습니다.

import java.io.PipedReader;
import java.io.PipedWriter;
import java.io.IOException;

public class PipedCommunicationExample {
    public static void main(String[] args) {
        try {
            // PipedReader와 PipedWriter 생성
            PipedReader reader = new PipedReader();
            PipedWriter writer = new PipedWriter();

            // PipedReader와 PipedWriter 연결
            writer.connect(reader);

            // 데이터를 쓰는 스레드 시작
            Thread writerThread = new Thread(() -> {
                try {
                    writer.write("Hello, PipedReader!");
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
            writerThread.start();

            // 데이터를 읽는 스레드 시작
            Thread readerThread = new Thread(() -> {
                try {
                    int data;
                    while ((data = reader.read()) != -1) {
                        System.out.print((char) data);
                    }
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
            readerThread.start();

            // 스레드가 모두 종료될 때까지 대기
            writerThread.join();
            readerThread.join();

        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

이 예제에서는 PipedWriter와 PipedReader를 사용하여 두 스레드 간에 데이터를 주고받고 있습니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 StringWriter  (0) 2023.11.26
자바 StringReader  (0) 2023.11.26
자바 PipedReader  (0) 2023.11.26
자바 FileWriter  (0) 2023.11.26
자바 FileReader  (0) 2023.11.26