如何验证线程中的命令是否在Java中成功启动并且可以启动另一个线程?

时间:2010-11-19 19:01:56

标签: java multithreading

我有几个线程,其中一个使用ProcessBuilder运行HTPP服务。

HttpThread class

ProcessBuilder pb = new ProcessBuilder(command);
Process process pb.start();
process.waitFor();
int exitValue = process.exitValue();

我想在服务启动时让另一个线程等待。最好的方法是什么?

睡眠似乎不是我的好解决方案。也许可以使用一些方法HttpThread.isReady(boolean b)但是我无法设置这个标志,因为在启动命令之后服务保持运行并且线程正在等待服务完成。

另一种方法是创建一个线程并进行套接字连接,但也不确定它是不是很好的解决方案。

你怎么看?

2 个答案:

答案 0 :(得分:1)

这听起来像Producer/Consumer问题的一个实例。为什么不使用wait/notify机制?

这是一名学者example

答案 1 :(得分:0)

您的选项相当有限,因为HTTP服务存在于JVM之外。

  1. 您可以使用进程间通信轮询其他进程,例如套接字。
  2. 您可以阻止该进程将就绪消息写入Process.getOutputStream()