<b>Java中操作管道实现线程间的通讯</b>[Java编程]
本文“<b>Java中操作管道实现线程间的通讯</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在Java 语言中,供应了各种各样的输入输出流(stream),使我们可以很便利的对数据举行操作,此中,管道(pipe)流是一种特别的流,用于在差别线程(threads)间直接传送数据.一个线程发送数据到输出管道,另一个线程从输入管道中读数据.通过利用管道,实现差别线程间的通讯.无需告急于近似暂时文件之类的东西.本文在扼要介绍管道的基本概念后,将以一个具体的实例pipeapp加以具体阐明.
1.管道的成立与利用
Java供应了两个特别的专门的类专门用于处理管道,它们就是pipedinputstream类和pipeoutputstream类.
Pipedinputstream代表了数据在管道中的输出端,也就是线程向管道读数据的一端;pipeoutputstream代表了数据在管道中的输入端,也就是线程向管道写数据的一端,这两个类一同利用可以供应数据的管道流.
为了成立一个管道流,我们必须首先成立一个pipeoutstream对象,然后,成立pipeinputstream对象,实比方下:
pipeout= new pipedyoutstream();
pipein= new pipedputsteam(pipepout);
一旦成立了一个管道后,便可以象操作文件一样对管道举行数据的读写.
2.演示程序: pipeapp
利用程序由三个程序构成:主线程(pipeapp.Java)及由主线程启动的两个二级线程(ythread.Java和zthread.Java),它们利用管道来处理数据.程序从一个内容为一行一行"x"字母的"input.txt"文件中读取数据,利用管道传输数据,第一次是操纵线程ythread将数据"x"转换为"y",最后操纵线程zthread将"y"转换为"z",之后,程序在屏幕上显示改正后的数据.
主线程 (pipeapp.Java)
在main()办法中,程序首先成立一个利用对象:pipeapp pipeapp=new pipeapp();
由于程序中流操作都需求利用IOException非常处理,所以设置了一个try块.在try中,为了从源文件中读取数据,程序为"input.txt"文件成立了一个输入流Xfileln,:
fileinputstream xfileln= new fileinputstream("input.txt");
新的输入传播送给changetoy()办法,让线程ythread能读取该文件:
inputstream ylnpipe =pipeapp.changetoy(xfileln);
changetoy()办法成立将输入数据"x"改变到"y"的线程ythread,并返回该线程的输入管道:
inputstream zlnpipe = pipeapp.changetoz(ylnpipe);
changetoz()办法启动将数据从"y"改变到"z"的线程zehread,主程序将利用从changetoz()返回的输入管道.得到以改正的数据.
然后,程序将管道输入流定位到datainputstream对象,使程序可以利用readline()办法读取数据:
datainputstream inputstream = new datainputstream(zlnpiepe);
成立了输入流今后,程序便可以以行一行的读取数据病显示在屏幕上.
String str= inputstream.readline();
While(str!=null)
{
system.out.println(str);
str=inputstream.readline();
}
显示完成之后,程序关闭输入流:
inputstream.close();
changetoy()办法
以上是“<b>Java中操作管道实现线程间的通讯</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |