JavaDemo——java管道

管道设计模式、责任链模式、单例模式 压缩包里是我自己写的管道模式、单例模式的代码;你需要copy到你自己eclipse建的工程文件中。另外,我把我的代码说明,写在了readme.txt文件里,偷懒以及求快的人看看...如果有问题,可留言。另外我分数高,但绝对有保证! 立即下载

java管道用于Thread间单向通信;

一、jdk1.4之前使用io包里的pipedStream

Demo:

/**
 * 2021年5月12日下午2:46:39
 */
package testPipe;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

/**
 * @author XWF
 *
 */
public class TestPipedStream {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		PipedInputStream pis = new PipedInputStream();
		PipedOutputStream pos = new PipedOutputStream();
		try {
			pis.connect(pos);
			new Thread(() -> {
				try {
					byte[] bs = pis.readAllBytes();
					System.out.println(new String(bs));
					//需要关闭
					pis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}).start();
			new Thread(() -> {
				try {
					pos.write("abcd".getBytes());
					//需要关闭
					pos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}).start();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

结果:

 

二、jdk1.4有了nio包的Pipe

Demo:

/**
 * 2021年5月10日上午9:32:52
 */
package testPipe;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.Pipe;
import java.nio.channels.Pipe.SinkChannel;
import java.nio.channels.Pipe.SourceChannel;

/**
 * @author XWF
 *
 */
public class TestPipe {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			Pipe p = Pipe.open();
			
			new Thread(() -> {
				//写入
				SinkChannel sinkCh = p.sink();
				String str = "_";
				for(int i = 1; i <= 5; i++) {
					str += i;
					ByteBuffer byteBuffer = ByteBuffer.wrap(str.getBytes());
					try {
						sinkCh.write(byteBuffer);
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
				try {
					sinkCh.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}).start();
			
			new Thread(() -> {
				//读取
				SourceChannel sourceCh = p.source();
				ByteBuffer byteBuffer = ByteBuffer.allocate(9);
				while(true) {
					try {
						byteBuffer.clear();
						int readLen = sourceCh.read(byteBuffer);
						System.out.println("readLen=" + readLen);
						if(readLen < 0) {
							sourceCh.close();
							break;
						}
						byteBuffer.flip();
						byte[] bytes = new byte[readLen];
						byteBuffer.get(bytes);
						System.out.println(new String(bytes));
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}).start();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

运行了几次结果:

WPS接入DeepSeek,实现AI辅助功能 总的来说,借助 WPS 中宏功能与 DeepSeek 大模型的结合,文档处理、内容创作和数据分析等任务都能更加智能化、自动化。这不仅大幅提升了工作效率,也为办公场景带来了全新的智能化办公体验。 阅读详情

相关推荐

保姆级教程:将YOLOv8模型封装成Docker镜像,集成到CVAT实现自动标注

本文提供了一份详细的保姆级教程,指导如何将YOLOv8模型封装成Docker镜像并集成到CVAT平台,实现自动化标注。通过环境配置、模型服务化封装、Docker镜像构建与优化、CVAT平台集成等步骤,帮助开发者高效完成计算机视觉项目的自动标注工作流,显著提升标注效率。

weixin_28692817的博客 415

Java管道流Demo

package test; import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; public class 管道流 { public static void main(String[] args) throws IOException, Interrupt...

cndn20120225的博客 184

疾病负担研究(GBD)介绍

今天我们来聊一聊第一个公共数据库——GBD数据库,全称叫做global burden of disease(全球疾病负担),该数据库每年都会更新,目前已经更新到GBD2019。 这里直接给大家贴出网址:Global Burden of Disease Study 2019 (GBD 2019) Data Resources | GHDx 上图中红色圈圈标识的就是数据库的数据获取界面的链接,大家直接点击即可. 数据的检索十分方便: Context下拉菜单中可以选择不同的选项,默认是caus

weixin_44240228的博客 1万+

Java设计模式 - 管道模式

管道模式使用有序的Stage(或者Handler)来顺序的处理一个输入值,每个处理过程被看做一个阶段。但是每一个阶段都以来上一个阶段的输出。如果不依赖上一个阶段的输出结果,那么使用责任链模式即可。责任链模式的每个处理器互相独立,不依赖别的处理器结构。做个比喻:管道模式可用看做是富士康流水线,每个环节都依赖上个环节的输出责任链模式类似于招标,下发任务,谁有能力谁处理,不需要关心其他人;当然设计模式肯定是可以混用的,都是使用两个模式也是OK的。

BASK2311的博客 2197

保姆级教程:用YOLOv5s搞定钢材表面缺陷检测,从数据集NEU-DET到模型部署全流程

本文提供了一份详细的YOLOv5s钢材表面缺陷检测教程,涵盖从NEU-DET数据集处理到模型部署的全流程。针对工业环境中的实际限制,如计算资源有限和标注样本少等问题,提供了优化方案和实用技巧,帮助开发者快速实现高效的钢材缺陷检测系统。

weixin_30568591的博客 465

AutoCAD 2025在Win10/Win11上的官方安装、配置与问题排查全指南

对于需要在 Windows 11 或 Windows 10 系统上部署 AutoCAD 2025 的设计师、工程师和 IT 支持人员来说,一个稳定、合规的安装流程是高效工作的基石。网络上充斥着各种所谓的“免费下载”和“一键安装”教程,但这些资源往往来源不明,可能捆绑恶意软件、导致软件崩溃,甚至引发严重的许可合规风险。本文旨在提供一个清晰、安全、基于官方最佳实践的 AutoCAD 2025 安装与配置指南,重点解决在 Windows 11 和 Windows 10 系统上部署时可能遇到的兼容性问题、安装失败以

weixin_34396103的博客 451

Java Pipe(管道)

Java Pipe管道学习

lalalalalalahu的博客 1225

Claude Code 实战指南:用 AI 玩转终端编程,效率狂飙!

本文介绍了终端 AI 代理工具 Claude Code,涵盖常用命令、使用方法(如 init 初始化、权限配置、工作流程、上下文管理)、MCP 扩展工具及实战案例,展示其通过自然语言辅助开发的高效性与实用性。

个人技术 1万+

【Java 基础篇】深入理解 Java 管道(Pipes):从基础到高级

Java 管道是一种特殊的流,用于在线程之间传递数据。它通常由两个管道流组成:一个输入管道流和一个输出管道流。输入管道流用于从一个线程读取数据,而输出管道流用于将数据写入另一个线程。这两个管道流之间的数据传输是单向的,即数据只能从输入流传输到输出流。通过本文的介绍,我们深入了解了 Java 管道的基础概念和高级用法。Java 管道是一种强大的工具,可用于实现进程间通信,线程间数据传输等多种应用场景。希望本文能够帮助您更好地理解和应用 Java 管道,以满足不同的编程需求。

繁依Fanyi的博客 4877

Dify框架面试内容整理-如何优化Dify的应用性能?

为1536维)可选用 PCA、FAISS 的量化压缩方法降低维度(如128、256、512);对知识库预览、任务流配置等页面,使用 nginx/cache-control 减少请求。API 响应耗时(P50/P95)、Token 使用量、缓存命中率、向量检索耗时;对 Prompt+输入内容计算 Hash,缓存相同请求的返回结果;使用占位符 + 函数拼接,按需组合 Prompt,而非静态长模板;数据量大时,应在构建索引前清洗冗余段落、统一格式,避免重复向量。维度越低,检索越快,但可能影响召回准确度,需平衡。

不务正业的猿 1551

国密GmSSL v2版本命令行方式生成国密sm2私钥、公钥、签名和验证签名

GmSSL是国密算法的工具库(主要包含SM2、SM3、SM4和国密SSL证书生成等功能),项目本身是OpenSSL的分支,但是截至文章发布为止,OpenSSL主分支的国密算法并不完善,目前并不支持签名和解签,所以国密算法这块还是需要使用GmSSL工具库。网上现在并没有v2版本的GmSSL可用的命令行文章,本章用于记录这些命令。本文原创自csdn博客,其他网站看到这篇文章都是盗,版,爬。虫。网站,支持原创,远离盗版。

eguid音视频方向博客,分享经过实践检验的硬核音视频技术。FFmpeg、openCV和JavaCV音视频和图像处理系列教程发布十周年,众多开发者的严格验证。欢迎关注,一起交流探索学习最新音视频和图像处理技术 4606

Java 中的 Pipeline 设计模式

在本教程中,我们将回顾一个不属于经典 GoF 模式的有趣模式 - Pipeline (管道)模式。 它功能强大,可以帮助解决棘手的问题并能帮助我们改进应用程序的设计。此外,Java 还有一些内置解决方案来帮助实现此模式,我们会在文末进行讨论。

悟鸣的技术博客 3543

64、5G 侧链通信技术详解

本文详细解析了5G侧链通信的关键技术,包括资源感知与选择、UE间协调、混合ARQ、功率控制、信道探测与CSI报告以及侧链同步。资源感知与选择通过周期性或随机方式实现资源分配,UE间协调通过主动或被动方式避免资源冲突。混合ARQ机制确保数据传输可靠性,功率控制和信道探测优化传输质量并减少干扰。侧链同步则通过多种方式确保设备间时间一致性。这些技术相互配合,构建了高效稳定的5G侧链通信体系,适用于智能交通、物联网、应急通信等多个领域,为未来无线通信发展提供强大支撑。

oil88的博客 102

JavaDemo——java调用Linux命令

Demo: /** * createtime : 2018年9月6日 下午5:14:20 */ package com.useLinuxCmd; import java.io.IOException; /** * TODO * @author XWF */ public class TestLinuxCmd { /** * @param args */ public...

FlyLikeButterfly的博客 482

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Kafka关键知识点概括,命令,参数,javaDemo

kafka --------------     分布式流处理平台。     在系统之间构建实时数据流管道。     以topic分类对记录进行存储     每个记录包含key-value+timestamp     每秒钟百万消息吞吐量。     producer            //消息生产者     consumer            //消息消费者     consumer ...

静待花开 954

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java IO编程 - IO操作深入

Java IO 编程 IO操作深入

qq_50743381的博客 283

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java基础-21-IO流3

Java基础-IO流 IO流进阶3 1、IO流(对象的序列化) 没有方法的接口称为标记接口。 例如类Serializable,java.io.Serializable:类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义

faith_yee的专栏 535

Java IO编程

文章目录1 File类1.1 File类深入2 获取文件信息3 文件操作范例4 OutputStream字节输出流5 字节输入流InputStream6 字符输出流Writer7 字符输入流Reader8 范例:文件拷贝9 范例:目录拷贝10 管道流11 打印流12 内存流13 缓存输入流BufferedReader14 对象序列化14.1 使用Serializable接口实现自动序列化14.2 对象属性部分序列化:transient关键字14.3 自定义序列化14.4 Externalizable接口实现

Darren的博客 234

Java8 Stream API

集合在Java中使用的非常多,在对数据处理中,List几乎是最常用的API,为了更方便地使用函数式编程对List进行操作,Java8新增了stream。 Stream表示数据流,它不是数据结构,也并不保存数据,在它上面的操作也不会改变原Stream,而是新生成Stream。它提供了过滤、排序、映射、规约等多种操作。 Stream借助Lambda表达式,提高了编程效率和程序可读性。Stream的操作...

鸣宇淳的专栏 701

黑马程序员 Java基础IO流之File类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- File的概述 流操作的是数据,但是不能操作文件夹,或者文件的属性,这时Java就为我们提供了一个File类,来为方便我们对文件或者文件夹的属性进行操作。 演示实例: import java.io.*; class JavaCollection1_80 { public static

u013372012的专栏 590

Java 下载文件IO,NIO,文件内存映射性能差异分析

1. 在JAVA传统的IO系统中,读取磁盘文件数据的过程如下: 以FileInputStream类为例,该类有一个read(byte b[])方法,byte b[]是我们要存储读取 到用户空间的缓冲区。参看read(byte b[])方法的源码,可知,它会在内部再调用readBytes(b, 0, b.length)方法,而且readBytes(b, 0, b.length)方法是一个native方法(即本地方法),最终通过这个本地方法来发起一次系统调用,即调用系统内核的read()方法,内...

banyoyo的博客 370

java中找到具体代码导致cpu升高的方法

运行导致cpu升高 cpu进程号 查看进程下cpu信息,执行后出现一行信息,然后按H,需要shift +h实现 按H,出现具体的cpu标高pid 对cpu标高的pid进制转换成十六进制 十六进制中字母全部小写,利用管道操作查看cpu标高信息 jstack命令查看...

weixin_45810161的博客 1030

NO.1 Java 接口&注解

零蚀 前言 我以前学习java的时候我觉得好难啊,为什么接口这么用,注解这么用,编程就像背英语一样枯燥,乏味,而且特别让人恶心,差点回家种田去了,后来知道,这只是我自己的一厢情愿,其实任何人类世界创造出来的东西,都是为了便于使用者来更好的为资本剥削,那么这些java的部件创生,也是为了取悦开发者,既然沿用至今,必然有其无可替代的便利,编程有时更像心理学,就是通过这个方式,表示开发者的意愿,并让这个意愿通过程序员继承下去。 如果说最喜欢谁的名言,我觉得我最喜欢特朗普的一句名言 Nobody kn.

qq_38315348的博客 327

读书笔记-Java并发编程的艺术-第4章(Java并发编程基础)-第3节(线程间通信)

Java并发编程的艺术 Java并发编程基础 线程间通信

心流时间的博客 927

黑马程序员_JavaIO(一)

android培训、java培训 IO操作三大类:1、File类,文件操作 2、字节操作 3、字符操作 File类:是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的方法来操纵文件,通过调用File类提供的各种方法,能够创建、删除、重命名文件,判断文件的读写权限及是否存在,设置和查询文件最近的修改时间。 在D:盘根目录下创建一个demo.ext文件:

267

java IO流二

java IO流二

. 126
上一篇: JavaDemo——关于javaagent的使用
下一篇: 关于java里try、catch、finally和return的逻辑
FlyLikeButterfly
博客等级 码龄9年 223粉丝 209原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值