자바 파이프 흐름 구현 스 레 드 간 통신 프로 세 스 분석
2406 단어 Java파이프스 레 드커 뮤 니 케 이 션
자바 언어 에서 다양한 입력/출력 흐름 Stream 을 제공 하여 우 리 는 데 이 터 를 편리 하 게 조작 할 수 있 습 니 다.그 중에서 파이프 흐름 은 특수 한 흐름 으로 서로 다른 스 레 드 에서 데 이 터 를 직접 전송 하 는 데 사 용 됩 니 다.하나의 스 레 드 는 출력 파이프 흐름 으로 데 이 터 를 보 내 고 다른 스 레 드 는 입력 파이프 흐름 에서 데 이 터 를 읽 습 니 다.
파 이 프 를 사용 하여 서로 다른 스 레 드 간 의 통신 을 실현 하고 임시 파일 과 같은 것 을 빌 릴 필요 가 없다.
바이트 흐름
Piped InputStream 과 Piped OutputStream
문자 흐름
Piped Reader 와 Piped Writer.
예시
public class PipeStreamTest {
public static void main(String[] args) throws IOException, InterruptedException {
WriteData writeData = new WriteData();
ReadData readData = new ReadData();
PipedReader reader = new PipedReader();
PipedWriter writer = new PipedWriter();
writer.connect(reader);
new Thread(() -> {
writeData.writeMethod(writer);
}).start();
Thread.sleep(2000);
new Thread(() -> {
readData.readMethod(reader);
}).start();
}
static class WriteData {
public void writeMethod(PipedWriter writer) {
try {
System.out.println("write :");
for (int i = 0; i < 300; i++) {
String outData = "" + (i + 1);
writer.write(outData);
System.out.print(outData);
}
System.out.println();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
static class ReadData {
public void readMethod(PipedReader reader) {
try {
System.out.println("read :");
char[] byteArray = new char[20];
int readLength = reader.read(byteArray);
while (readLength != -1) {
String newData = new String(byteArray, 0, readLength);
System.out.print(newData);
readLength = reader.read(byteArray);
}
System.out.println();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
실행 결 과 는 다음 과 같 습 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.