Java温故而知新-管道流

107 篇文章 1 订阅

管道流

在这里插入图片描述
Java本身是属于多纯种的编程语言,而多线程和多进程最大的区别在于:一个进程可以产生多个线程,那么这些线程都属于同一个进程中的组成单元,所以这些线程都可以直接共享给定进程里面的所有资源,包括数据,但是在Java里面它强调不同的线程有可能也有属于自己的内容,所以不同线程之间也应该利用管道的方式来进行处理。

Java代码:

package com.yootk.demo;
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
class SendThread implements Runnable {
    private PipedOutputStream output = new PipedOutputStream() ;    // 管道输出流
    @Override
    public void run() {
        try {   // 通过管道实现数据的发送
            this.output.write("李兴华编程训练营:yootk.ke.qq.com".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public PipedOutputStream getOutput() {  // 通过子类操作
        return this.output ;
    }
}
class ReceiveThread implements Runnable {
    private PipedInputStream input = new PipedInputStream() ; // 管道输入流
    @Override
    public void run() {
        try {
            byte data [] = new byte [1024] ;
            int len = this.input.read(data) ; // 接收管道的数据
            System.out.println("【接收到消息】" + new String(data, 0, len));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public PipedInputStream getInput() {
        return this.input ;
    }
}
public class YootkDemo {    // 李兴华编程训练营:yootk.ke.qq.com
    public static void main(String[] args) throws Exception {
        SendThread send = new SendThread() ; // 发送线程
        ReceiveThread receive = new ReceiveThread() ; // 接收线程
        send.getOutput().connect(receive.getInput()); // 管道连接
        new Thread(send).start();
        new Thread(receive).start();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值