我是一个相当新的Java开发人员,所以我正在寻找一些社区反馈,他们将如何实现我需要解决的问题的解决方案,以及对我提出的解决方案的反馈。
没有太多细节,这就是欲望:
我的想法是在单独的应用程序中使用我现有的应用程序/框架(我们将其称为“子”),在单独的应用程序中使用ProcessBuilder()调用队列(“父”)。此解决方案允许我为父应用程序和子应用程序利用现有的可重新启动框架。
这是一种可以被忽视的方法吗?这是一种可靠的方法吗?即使你不喜欢这种方法,如果你确定使用ProcessBuilder循环执行任务是最好的选择,你会如何解决它?
伪代码类似于以下内容(幸运的是实际代码不会太长)
Class Task {
//contains all the information for the task we need to complete
String taskArgs;
}
Class TaskWatcher implements Runnable {
//constructor requires process object for Constructor
//boolean isFinished();
process.waitfor();
isFinished=true;
}
Class TaskOutStream implements Runnable {
//constructor requires process object & TaskWatcher object
//Receives and redirects output of process
}
Class Semaphore {
//constructor sets int threadCount (We'll call it "3" for now)
synchronized acquireThread{
while threadCount==0, wait();
threadcount--
}
synchronized releaseThread{
threadcount++
notify();
}
}
Class TaskThread implements Runnable (
// constructor requires Task Object
run() {
semaphoreObject.acquireThread();
Process p = ProcessBuilder.command("cmd text", "args").start();
tw = TaskWatcher(p);
ThreadOutStream(p, tw);
}
}
Class TaskRunner {
//Constructor requires ArrayList<Task>
//For each Task t
TaskThread thread = new TaskThread(t);
thread.start();
}
假设存在来自线程的所有“return;”,并且从工作队列(父级)或实际工作(子级)级别外部处理重启功能,这种方法是否有意义?它注定要失败吗?
仍然无法找到一个不这样做的理由,任何人?