1. 程式人生 > >Java-NIO(九):管道 (Pipe)

Java-NIO(九):管道 (Pipe)

png bsp java nio pri java-nio ges 線程 pre logs

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 }

Java-NIO(九):管道 (Pipe)