1. 程式人生 > >NIO之管道 (Pipe)

NIO之管道 (Pipe)

接收 put 管道 itl read 並保存 src ech 緩沖區

Java NIO 管道是2個線程之間的單向數據連接。Pipe有一個source通道和一個sink通道。數據會被寫到sink通道,從source通道讀取。

技術分享圖片

代碼使用示例:

技術分享圖片
 1 @Test
 2     public void testPipe() throws IOException {
 3         // 1、獲取通道
 4         Pipe pipe = Pipe.open();
 5 
 6         // 2、獲取sink管道,用來傳送數據
 7         Pipe.SinkChannel sinkChannel = pipe.sink();
 8 
 9         // 3、申請一定大小的緩沖區
10         ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
11         byteBuffer.put("123232142345234".getBytes());
12         byteBuffer.flip();
13 
14         // 4、sink發送數據
15         sinkChannel.write(byteBuffer);
16 
17         // 5、創建接收pipe數據的source管道
18         Pipe.SourceChannel sourceChannel = pipe.source();
19         // 6、接收數據,並保存到緩沖區中
20         ByteBuffer byteBuffer2 = ByteBuffer.allocate(1024);
21         byteBuffer2.flip();
22         int length = sourceChannel.read(byteBuffer2);
23 
24         System.out.println(new String(byteBuffer2.array(), 0, length));
25 
26         sourceChannel.close();
27         sinkChannel.close();
28 
29     }
技術分享圖片

NIO之管道 (Pipe)