§1 概述
Pipe
,即管道,是两个线程之间的单向数据连接
Pipe
中会包含两个通道
- 一条线程向 sink
中写入数据
- 另一条线程通过 source
通道读取数据
§2 方法
创建
open()
写入
SinkChannel.write()
读取
SourceChannel.read()
§3 示例
@Component
public class PipeDemo {
public void write(Pipe pipe, ByteBuffer buf) throws IOException {
pipe.sink().write(buf);
}
public void read(Pipe pipe) throws IOException {
ByteBuffer buf = ByteBuffer.allocate(100);
pipe.source().read(buf);
System.out.println(new String(buf.array()));
}
}
// 测试用例
void pipe() {
try {
Pipe pipe = Pipe.open();
new Thread(()->{
try {
pipeDemo.write(pipe,ByteBuffer.wrap(String.valueOf(System.currentTimeMillis()).getBytes(StandardCharsets.UTF_8)));
} catch (IOException e) {
e.printStackTrace();
}
}).start();
new Thread(()->{
try {
pipeDemo.read(pipe);
} catch (IOException e) {
e.printStackTrace();
}
}).start();
} catch (Exception e) {
e.printStackTrace();
}
}