Die Anleitung zu Java PipedReader
1. PipedReader
Um besser PipedReader zu verstehen, gebe ich eine Situation wie die folgende Abbildung:
Angenommen, Sie entwickeln eine Applikation Multithreading und Sie haben 2 unabhängige Thread als Thread-A und Thread-B. Die Frage wird gestellt:
- Was ist zu tun, damit Zeichen jedes Mal, wenn sie in Thread-A erscheinen, automatisch in Thread-B übertragen werden?
PipedWriter und PipedReader werden erstellt, damit Sie die erwähnte Situation umgehen können. Jedes Mal, wenn die Daten in PipedWriter geschrieben werden, treten sie automatisch im PipedReader auf.
PipedReader constructors
PipedReader()
PipedReader(int pipeSize)
PipedReader(PipedWriter src)
PipedReader(PipedWriter src, int pipeSize)
Damit die in PipedWriter geschriebenen Daten im PipedReader angezeigt werden, müssen Sie diese beiden Objekte miteinander verbinden.
PipedWriter pipedWriter = new PipedWriter();
PipedReader pipedReader = new PipedReader();
pipedWriter.connect(pipedReader);
Die Kode oben sind äquivalent mit den folgenden Wege:
PipedWriter pipedWriter = new PipedWriter();
PipedReader pipedReader = new PipedReader();
pipedReader.connect(pipedWriter);
PipedWriter pipedWriter = new PipedWriter();
PipedReader pipedReader = new PipedReader(pipedWriter);
PipedReader pipedReader = new PipedReader();
PipedWriter pipedWriter = new PipedWriter(pipedReader);
- Die Anleitung zu Java PipedWriter
2. Example 1
PipedReaderEx1.java
package org.o7planning.pipedreader.ex;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.io.PipedReader;
import java.io.PipedWriter;
public class PipedReaderEx1 {
private PipedReader pipedReader;
private PipedWriter pipedWriter;
public static void main(String[] args) throws IOException, InterruptedException {
new PipedReaderEx1().test();
}
private void test() throws IOException, InterruptedException {
// Create a PipedReader
pipedReader = new PipedReader();
// Data written to 'pipedWriter'
// will appear automatically at 'pipedReader'.
pipedWriter = new PipedWriter(pipedReader);
new ThreadB().start();
new ThreadA().start();
}
//
class ThreadA extends Thread {
@Override
public void run() {
try {
char[] chs = new char[] { 'a', 'a', 'b', 'c', 'e' };
for (char ch : chs) {
pipedWriter.write(ch);
Thread.sleep(1000);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
closeQuietly(pipedWriter);
}
}
}
//
class ThreadB extends Thread {
@Override
public void run() {
try {
int ch = 0;
while ((ch = pipedReader.read()) != -1) {
System.out.println((char) ch);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
closeQuietly(pipedReader);
}
}
}
private void closeQuietly(Reader reader) {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
}
}
}
private void closeQuietly(Writer writer) {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
}
}
}
}
Output:
3. Example 2
Z.B: Verwenden Sie PipedReader, PipedWriter mit BufferedReader und BufferedWriter um die Leistung des Programm zu verbessern.
PipedReaderEx2.java
package org.o7planning.pipedreader.ex;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.io.PipedReader;
import java.io.PipedWriter;
public class PipedReaderEx2 {
private BufferedReader bufferedReader;
private BufferedWriter bufferedWriter;
public static void main(String[] args) throws IOException, InterruptedException {
new PipedReaderEx2().test();
}
private void test() throws IOException, InterruptedException {
PipedReader pipedReader = new PipedReader();
PipedWriter pipedWriter = new PipedWriter();
pipedReader.connect(pipedWriter);
this.bufferedReader = new BufferedReader(pipedReader);
this.bufferedWriter = new BufferedWriter(pipedWriter);
new ThreadB().start();
new ThreadA().start();
}
//
class ThreadA extends Thread {
@Override
public void run() {
try {
String[] texts = new String[] { "One\nTwo\n", "Three\nFour\n", "Five" };
for (String text: texts) {
bufferedWriter.write(text);
bufferedWriter.flush();
Thread.sleep(1000);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
closeQuietly(bufferedWriter);
}
}
}
//
class ThreadB extends Thread {
@Override
public void run() {
try {
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
closeQuietly(bufferedReader);
}
}
}
private void closeQuietly(Reader reader) {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
}
}
}
private void closeQuietly(Writer writer) {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
}
}
}
}
Output:
Die Anleitungen Java IO
- Die Anleitung zu Java CharArrayWriter
- Die Anleitung zu Java FilterReader
- Die Anleitung zu Java FilterWriter
- Die Anleitung zu Java PrintStream
- Die Anleitung zu Java BufferedReader
- Die Anleitung zu Java BufferedWriter
- Die Anleitung zu Java StringReader
- Die Anleitung zu Java StringWriter
- Die Anleitung zu Java PipedReader
- Die Anleitung zu Java LineNumberReader
- Die Anleitung zu Java PushbackReader
- Die Anleitung zu Java PrintWriter
- Die Anleitung zu Java IO Binary Streams
- Die Anleitung zu Java IO Character Streams
- Die Anleitung zu Java BufferedOutputStream
- Die Anleitung zu Java ByteArrayOutputStream
- Die Anleitung zu Java DataOutputStream
- Die Anleitung zu Java PipedInputStream
- Die Anleitung zu Java OutputStream
- Die Anleitung zu Java ObjectOutputStream
- Die Anleitung zu Java PushbackInputStream
- Die Anleitung zu Java SequenceInputStream
- Die Anleitung zu Java BufferedInputStream
- Die Anleitung zu Java Reader
- Die Anleitung zu Java Writer
- Die Anleitung zu Java FileReader
- Die Anleitung zu Java FileWriter
- Die Anleitung zu Java CharArrayReader
- Die Anleitung zu Java ByteArrayInputStream
- Die Anleitung zu Java DataInputStream
- Die Anleitung zu Java ObjectInputStream
- Die Anleitung zu Java InputStreamReader
- Die Anleitung zu Java OutputStreamWriter
- Die Anleitung zu Java InputStream
- Die Anleitung zu Java FileInputStream
Show More
- Anleitungen Java Servlet/JSP
- Die Anleitungen Java New IO
- Anleitungen Spring Cloud
- Die Anleitungen Oracle Java ADF
- Die Anleitungen Java Collections Framework
- Java Grundlagen
- Die Anleitungen Java Date Time
- Java Open Source Bibliotheken
- Anleitungen Java Web Services
- Die Anleitungen Struts2 Framework
- Anleitungen Spring Boot