仅在通过文件接收(非用户)输入时执行的Java程序

时间:2013-11-02 15:44:18

标签: java c multithreading pipe simulated-annealing

作为我研究项目的一部分,我编写了一个实现模拟退火的Java搜索程序。但是,这个搜索不仅发生在Java程序中,因为我应该使用另一个用C编写的程序计算整体成本函数。所以基本上搜索例程就是这样:

示例成本函数:最小化{A + B} 表达式的第一部分A将在我的程序中完成,第二部分B将是从C程序计算的正则化术语。我知道我必须这样做似乎很奇怪,但我没有时间/资源/适当的背景来重新实现正规化程序作为我的Java程序的一部分。基本上我试图通过两部分搜索来搜索最佳值向量。

我希望从Java输出当前解决方案(作为C程序理解的格式化文件)并将其提供给C程序以进行正规化(我已完成此部分)。这就是我坚持的地方:当C程序运行时,我希望让我的Java程序等到它从C程序接收输入(以文件的形式)。所以基本上我的程序给另一个程序提供输入,然后停止执行(暂时)直到该C程序完成其工作并返回一个值文件,用于重新计算值,以便在下一次退火迭代中使用搜索范围。

我猜我应该使用某种线程方法,比如wait和notify,但我真的不确定。如果程序依赖于用户输入,那将非常简单。但是,该程序目前只在收到文件输入时执行。

请指教!如果这个问题冗长而令人困惑,我会事先道歉。我愿意澄清任何问题。谢谢。

1 个答案:

答案 0 :(得分:0)

基本上这个:

java runtime.getruntime() getting output from executing a command line program

当你准备好C部分时,你通过Runtime.exec()生成Process,打开输入和输出流,以你识别的格式输入你的数据,然后回读它的最终结果输出流并解析它。