两个线程之间单向传递数据时,可以使用管道Pipe规范读写操作
public static void testPipe() throws IOException { //创建管道 Pipe pipe = Pipe.open(); ByteBuffer buf = ByteBuffer.allocate(1024); //通过SinkChannel,向Pipe中写数据 Pipe.SinkChannel sinkChannel = pipe.sink(); buf.put("helloworld".getBytes()); buf.flip(); sinkChannel.write(buf); // 通过SourceChannel,从Pipe中读取数据 Pipe.SourceChannel sourceChannel = pipe.source(); ByteBuffer buf1 = ByteBuffer.allocate(1024); int len = sourceChannel.read(buf1); System.out.println("hello:"+new String(buf1.array(), 0, len)); sourceChannel.close(); sinkChannel.close(); }
看书上的范例,Pipe读取数据的时候,也是使用的buf接收,有点混淆,新建一个buf1接收 好理解点