パイプによるスレッド通信
2238 ワード
7.1パイプフロー
JavaのJDKには4つのクラスが用意されており、スレッド間で通信できるようになっています
7.2使用例
writeクラス
readerクラス
しゅかんすう
JavaのJDKには4つのクラスが用意されており、スレッド間で通信できるようになっています
PipedInputStream
PipedOutputStream
PipedReader
PipedWriter
7.2使用例
writeクラス
public class writer {
public void writeData(PipedOutputStream out)
{
try{
System.out.println("write: ");
for(int i=0;i<300;i++)
{
String outData = "" + (i + 1);
out.write(outData.getBytes());
System.out.println(outData);
Thread.sleep(10);
}
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
readerクラス
public class reader {
public void readData(PipedInputStream input)
{
try{
System.out.println("read: ");
byte[] byteArr = new byte[20];
int len = input.read(byteArr);
while (len != -1){
String newData = new String(byteArr,0,len);
System.out.println(newData);
len = input.read(byteArr);
}
System.out.println();
input.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
しゅかんすう
public class test{
public static void main(String[] args)
{
try {
writer writeData = new writer();
reader readDate = new reader();
PipedOutputStream out = new PipedOutputStream();
PipedInputStream input = new PipedInputStream();
//input.connect(out);
out.connect(input);
new Thread(new Runnable() {
@Override
public void run() {
writeData.writeData(out);
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
readDate.readData(input);
}
}).start();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}