Java I/O流 - 管道流
2021/4/8 1:08:28
本文主要是介绍Java I/O流 - 管道流,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java I/O流 - 管道流
管道流主要用来实现线程之间的通信。在使用管道流的时候,输入流和输出流需要并用,即在使用管理流时两者必须进行连接。通常,由某个线程将数据写入到相应的 PipedOutputStream 中,其他线程从 PipedInputStream 中读取数据。
PipedStream 实现线程传输数据示意(PipedStreamTest)
功能描述:定义一个接受方 Sender 和 发送方 Receiver,然后通过建立好的管道实现线程之间的通信
// 发送端线程 class Sender implements Runnable { private PipedOutputStream output = null; // 用来连接发送端的管道 public Sender(PipedOutputStream output) { this.output = output; // 连接发送管道 } @Override public void run() { String content = "我是要传送的内容"; // 传输的数据 try { output.write(content.getBytes()); // 将数据写入发送端 output.close(); // 关闭管道输出流 } catch (IOException e) { e.printStackTrace(); } System.out.println("发送方发送信息完成!"); } } // 接收方线程 class Receiver implements Runnable { private PipedInputStream input = new PipedInputStream(); // 用来连接接受端的管道 public PipedInputStream getInput() { return input; // 传递输入管道给发送方连接 } @Override public void run() { byte[] bytes = new byte[1024]; try { int nums = input.read(bytes); // 取得输入端输入的信息 input.close(); // 关闭输入管道流 if (nums == -1) { System.out.println("接受端接收的内容为空!"); } else { System.out.println("接受端接收的内容为: " + new String(bytes, 0, nums) + "!"); } } catch (IOException e) { e.printStackTrace(); } } } public class PipedStreamTest { public static void main(String[] args) throws IOException { // 建立管道的输入与输出流 PipedInputStream input = new PipedInputStream(); PipedOutputStream output = new PipedOutputStream(); // 建立输出端和接收端的线程 Sender sender = new Sender(output); // 将输出管道连通发送方的输出流 Receiver receiver = new Receiver(); input = receiver.getInput(); // 将输入管道连通接受方的输入流 // 连接输入输出管道 output.connect(input); // 运行输入输出端 new Thread(sender).start(); new Thread(receiver).start(); } }
小结:
-
管道流传递数据的是字节流
-
管道流就像一条线一样,将两个无关的线程连接起来,使双方可以输送数据
-
无论 CUP 如何调度,连接了输入输出管道的线程,
一定是发送方线程先完成后,接受方线程才能开始运行
这篇关于Java I/O流 - 管道流的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南