管道的意思,就是向一个管子一样从一端到另一端, 只支持单方向的数据传输, 需要注意的不能在同一个线程使用管道否则会导致死锁的情况,发生和接收必须在不同线程, 通过使用管道,实现不同线程间的通信,而无需借助于临时文件之类的东西。
Java 提供了四个相关的管道流,我们可以使用其在多线程进行数据传递,其分别是
● PipedInputStream字节管道输入流字节流
● PipedOutputStream字节管道输出流字节流
● PipedReader字符管道读取字符流
● PipedWriter字符管道写入字符流
其分为两类:字节流和字符流,基本步骤为:线程A写入数据到输出流,线程B从输入流读取数据, ,从而实现线程通讯
public static void main(String[] args) throws Exception {
PipedReader pipedReader = new PipedReader();
PipedWriter pipedWriter = new PipedWriter();
pipedReader.connect(pipedWriter);
new Thread(new Runnable() {
@Override
public void run() {
int i = 0;
while (true){
try {
pipedWriter.write("hello world"+i++ );
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
while (true){
try {
char[] chars = new char[2048];
int read = pipedReader.read(chars);
System.out.println(new String(chars,0,read));
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
}
点赞 -收藏-关注-便于以后复习和收到最新内容
有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
在本博客学习的技术不得以任何方式直接或者间接的从事违反中华人民共和国法律,内容仅供学习、交流与参考
免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我、以迅速采取适当措施,避免给双方造成不必要的经济损失。
感谢,配合,希望我的努力对你有帮助^_^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)