5.管道 Pipe

Posted 白日梦想家12138

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.管道 Pipe相关的知识,希望对你有一定的参考价值。

/*管道(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);

 

 1 public class TestPipe {
 2     @Test
 3     public void test1() throws Exception {
 4         // 1.获取管道
 5         Pipe pipe = Pipe.open();
 6 
 7         // 2.将缓冲区 中的数据写入管道   (线程A)
 8         ByteBuffer buffer = ByteBuffer.allocate(1024);
 9 
10         SinkChannel sinkChannel = pipe.sink();
11         buffer.put("通过单向管道发送数据".getBytes());
12         buffer.flip();
13         sinkChannel.write(buffer);
14 
15         // 3.读取缓冲区中的数据   (线程B)
16         SourceChannel sourceChannel = pipe.source();
17 
18         sourceChannel.read(buffer);
19         buffer.flip();
20         System.out.println(new String(buffer.array()));
21         
22         sourceChannel.close();
23         sinkChannel.close();
24         
25 
26     }
27 }

 

以上是关于5.管道 Pipe的主要内容,如果未能解决你的问题,请参考以下文章

Java-NIO:管道 (Pipe)

简述Linux进程间通信之管道pipe(下)

妙不可言,使用 Python 管道 Pipe 编写代码如此优雅

Python 开发神技 -- 使用管道 Pipe

java nio管道

命名管道:ConnectNamedPipe 后的 ReadFile 返回 ERROR_BROKEN_PIPE