java io 不同线程之间的通信
来源:互联网 发布:关闭端口 编辑:程序博客网 时间:2024/06/05 08:46
java IO 包中的管道 PipedInputStream,PipedOutStream 为运行在同一个JVM 下的两个线程之间通信提供通信能力,所以管道也可以作为数据源和目标媒介。
注意:java中的管道,不能在两个不同的JVM 之间的线程之间进行通信,概念上java中的管道 不同于Unix、Linux系统中的管道。在Unix,Linux 中运行在不同地址空间进程可以通过通道通信。在java中通信的双方应该是运行在同一个进程中的不同线程。
/** * 学习 通道 pipe 在不同线程之间的通信 * @throws IOException * @throws InterruptedException */public static void testPipeExample() throws IOException, InterruptedException{final PipedOutputStream output = new PipedOutputStream();final PipedInputStream input = new PipedInputStream(output);Thread thread1 = new Thread(new Runnable() {@Overridepublic void run() {try {output.write("hello world pipe!".getBytes());} catch (IOException e) {e.printStackTrace();}finally{try {<span style="color:#ff0000;">output.close();</span>} catch (IOException e) {e.printStackTrace();}}}});Thread thread2 = new Thread(new Runnable() {@Overridepublic void run() {try {int data = -1;while((data=input.read())!=-1){System.out.print((char)data);}} catch (IOException e) {e.printStackTrace();}finally{try {input.close();} catch (IOException e) {e.printStackTrace();}}}});thread1.start();thread2.start();}
原因是:在input.read之前,需要确保output管道是关闭的,也就是说,通道的内容是已经确定下来的,不可能再有write新内容了.(个人理解)
原文地址:点击打开链接
0 0
- java io 不同线程之间的通信
- java线程间通信[实现不同线程之间的消息传递(通信),生产者和消费者模型]
- 不同线程之间的通信方式
- java线程之间的通信
- Java线程之间的通信
- java线程之间的通信
- java线程之间的通信
- java线程之间通信
- java 线程之间的管道通信
- java多线程(三)线程之间的通信
- java 多线程 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- 线程之间的通信
- TCP滑动窗口 - 动画演示
- css+div
- [NOI2011]兔农(斐波那契数列+乘法逆+矩阵加速)
- 数据结构学习第二课
- ejb
- java io 不同线程之间的通信
- 核心动画
- java模式之适配器模式
- [面试经]VPTR和VTBL
- 当罗密欧遇到朱丽叶... ...当指针遇到数组
- atitit. java jsoup html table的读取解析 总结
- Objective-C基础——NSNumber 和 NSValue
- Java BIO、NIO、AIO区别与应用
- 百花齐放众筹模式(下)