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

如何验证线程中的命令是否在Java中成功启动,以及是否可以启动另一个线程?,java,multithreading,Java,Multithreading,我有几个线程,其中一个线程使用ProcessBuilder运行HTPP服务 HttpThread class ProcessBuilder pb = new ProcessBuilder(command); Process process pb.start(); process.waitFor(); int exitValue = process.exitValue(); 我想让另一个线程在服务启动时等待。最好的方法是什么 在我看来,睡眠并不是一个好的解决办法。也许可以使用HttpThrea

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

HttpThread class

ProcessBuilder pb = new ProcessBuilder(command);
Process process pb.start();
process.waitFor();
int exitValue = process.exitValue();
我想让另一个线程在服务启动时等待。最好的方法是什么

在我看来,睡眠并不是一个好的解决办法。也许可以使用HttpThread.isReady(布尔b)方法,但我无法设置此标志,因为在启动命令后,服务将保持运行,线程正在等待服务完成

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


你觉得怎么样

这听起来像是问题的一个例子。为什么不直接使用
wait/notify
机制呢


这是一个学术问题。

这听起来像是这个问题的一个例子。为什么不直接使用
wait/notify
机制呢


这是一个学术问题。

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

  • 您可以使用进程间通信(如套接字)轮询其他进程
  • 您可以阻止,直到进程将就绪消息写入

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

  • 您可以使用进程间通信(如套接字)轮询其他进程
  • 您可以阻止,直到进程将就绪消息写入

  • Amir,你把notify代码上面的示例类放在哪里了?我不明白你的问题。在我发布的示例中,您是否询问notify调用位于何处?或者你是在问在你发布的示例中,通知电话会去哪里?如果不清楚,我道歉。您的示例已经包含了所有与我发布的示例相关的类和问题。我问的原因是我不认为这是同一个问题。请澄清或举例说明。其想法是一个线程将等待条件变量继续。另一个线程在完成其工作时,将通知任何正在等待相同条件变量的线程。这是我想要的,但在这种情况下,它不会像示例中给出的那样工作,因为HttpThread作为Http服务工作,这意味着如果命令正确,它将保持运行,我需要知道它是否已启动。看看另一个答案。我想我会实施其中一个建议方案。谢谢。阿米尔,你把通知代码上面的示例类放在哪里了?我不明白你的问题。在我发布的示例中,您是否询问notify调用位于何处?或者你是在问在你发布的示例中,通知电话会去哪里?如果不清楚,我道歉。您的示例已经包含了所有与我发布的示例相关的类和问题。我问的原因是我不认为这是同一个问题。请澄清或举例说明。其想法是一个线程将等待条件变量继续。另一个线程在完成其工作时,将通知任何正在等待相同条件变量的线程。这是我想要的,但在这种情况下,它不会像示例中给出的那样工作,因为HttpThread作为Http服务工作,这意味着如果命令正确,它将保持运行,我需要知道它是否已启动。看看另一个答案。我想我会实施其中一个建议方案。非常感谢。