请大家帮我看看那里错了 我是在eclipse上运行的 运行后什么反应都没有 但是创建了新的进程 结束进程后 就会有 管道已关闭
的提示/**例子:在TestInOut类红启动java.exe命令执行另外一个MyTest类,TestInOut和
 * MyTest通过进程间的管道相互传递数据。
 * 
 */
package testInOut;
import java.io.*;
/**
 * 在java程序中可以用Process类的实例对象来表示子进程,子进程的标准输入和输出
不再连接到键盘和显示器,而是以管道流的形式连接到父进程的一个输出流和输入流对象上
调用Process类的getOutputStream和getInputStream方法可以获得连接到子进程的输出流和输入流对象
 *
 *MyTest之间的数据交换是这样设计的:
 *在TestInOut中要启动两个线程
 *main线程不停的向MyTest类中写数据,另外一个线程读取MyTest写回来的数据
 */
public class TestInOut implements Runnable
{
Process p = null; //在两个方法中都要调用子进程
public TestInOut() 
{
try
{
p = Runtime.getRuntime().exec("java MyTest");//启动子  进程
new Thread(this).start(); /*启动新的  线程
public Thread(Runnable target)
Parameters:
target - the object whose run method is called.
不能写成 new Thread(new TestInOut).start()1会产生无限递归
2线程中的P不是同一个*/
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}

public static void main(String[] args) 
{
// 不停地向子进程中写入代码
TestInOut tio = new TestInOut();//创建这个实例对象的时候就把子进程起来了 把接收线程起来了
tio.send();//然后在这个main中调用send();
}
public void send()
{
OutputStream ops = p.getOutputStream(); //连接到子进程的输出流对象
while(true)
{
try {
ops.write("help\r\n".getBytes());
} catch (IOException e) {
// TODO 自动生成 catch 块
System.out.println(e.getMessage());
}
}
}
public void run()
{
//不停地从子进程读取数据的代码(接收数据)
InputStream in = p.getInputStream();
BufferedReader bfr = new BufferedReader(new InputStreamReader(in));
try
{
while(true)
{
System.out.println(bfr.readLine());
}
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}}
package testInOut;
import java.io.*;public class MyTest { public static void main(String[] args)
{
String strLine = "";
try {
strLine = new BufferedReader(
new InputStreamReader(System.in)).readLine();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
while(true)
if(strLine != null)
System.out.println("Hi:"+strLine);
else
return;

}}