5.管道 Pipe
2024-08-31 09:54:10
/*管道(Pipe)*/
Java NIO 管道是 /*2 个线程*/ 之间的 /*单向*/数据连接
Pipe 有一个 source 通道 和 一个 sink 通道。数据会被写到 sink 通道,从source通道读取
Thread A ---> SinkChannel(Pipe) ---> SourceChannel(Pipe) ---> Thread B
//从管道读取数据(访问source通道)
SourceChannel sourceChannel = pipe.source();
//调用source通道的 read() 方法来读取数据
ByteBuffer buffer = ByteBuffer.allocate(1024);
sourceChannel.read(buf);
public class TestPipe {
@Test
public void test1() throws Exception {
// 1.获取管道
Pipe pipe = Pipe.open(); // 2.将缓冲区 中的数据写入管道 (线程A)
ByteBuffer buffer = ByteBuffer.allocate(1024); SinkChannel sinkChannel = pipe.sink();
buffer.put("通过单向管道发送数据".getBytes());
buffer.flip();
sinkChannel.write(buffer); // 3.读取缓冲区中的数据 (线程B)
SourceChannel sourceChannel = pipe.source(); sourceChannel.read(buffer);
buffer.flip();
System.out.println(new String(buffer.array())); sourceChannel.close();
sinkChannel.close(); }
}
最新文章
- 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)
- 在VS2010 下编译 cocos2d-x-2.1.4
- csu oj 1330 字符识别?
- SqlSever基础 select 用+号连接两个字符串
- 关于cocoapods添加静态库的奇葩配置
- EF+lambda表达式 实现LIKE模糊查询
- PHP如何添加内置的扩展
- OOP思想
- Sql Server合并多行询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
- JS判断一个数组中有无重复元素(数字)
- vue-if与vue-show的区别
- 资源中心的ES 服务的COM.IFLYTEK.ERSP.API.RESOURCEAPI 接口注册ZOOKEEPER失败,解决记录
- Initialize a vector in C++ (5 different ways)
- c++向量
- 使用<;c:set>;标签配置项目路径
- Multiple Instance .NET Windows Service
- RFC 4627 JSON
- 网络文件系统与 Linux
- wcf服务查看工具
- 【转】Mysql两种存储引擎的异同【MyISAM和InnoDB】