如何在Java中实现Queue?

时间:2013-07-24 14:26:19

标签: java

我有一个包含1个ThMapInfratab1-2.exe文件和3个.txt文件的文件夹。如果您以任何方式运行.exe文件(通过命令提示符,只需双击并通过任何语言),Taskbar上将显示一个图标。

enter image description here

我的.exe将运行2-3分钟。

知道我想使用.exe运行这些Java文件。我找到了如何从.exe技术运行Java

我的概念是,首先我会从目录中找到.txt个文件名。最后我会这样。

List<File> fileNames={"File1.txt","File2.txt","File3.txt"};

知道我想运行我的.exe文件3次,因为我的fileNames长度等于3。为此我编写了以下代码。

 //ExeFileProcess Function

 public void ExeternalFileProcessing(String DirectoryPath,String exeFileName,String inputFileName) throws IOException
 {
     String executableFileName = DirectoryPath+"/"+exeFileName;
     String inputFile=inputFileName;
     ProcessBuilder processBuilderObject=new ProcessBuilder(executableFileName,inputFile);
     File absoluteDirectory = new File(DirectoryPath);
     processBuilderObject.directory(absoluteDirectory);
     processBuilderObject.start();
     //processBuilderObject.wait();
 }

//Main Function code.

 public static void main(String[] args) throws IOException
 {
     ExternalFileExecutions ExternalFileExecutionsObject=new ExternalFileExecutions();
     for (int fileIndex = 0; fileIndex < fileNames.size(); fileIndex++) 
     {
         ExternalFileExecutionsObject.ExeternalFileProcessing("C:/Users/Infratab Bangalore/Desktop/Rod","ThMapInfratab1-2.exe",fileNames[fileIndex ]);
     }
 }

我评估了上面的代码,同时启动了3 .exe个进程。但我不想那样。我希望逐个运行.exe文件(我们需要监控,以前的.exe进程是否已完成。一旦完成,它允许进行下一次迭代)。

我尝试使用Wait()。但它无效。

我想,为此,我需要在ExeternalFileProcessing()中添加一些代码。但我没有得到任何东西。

任何人都可以建议我。

我希望,你明白,我的问题是什么。

1 个答案:

答案 0 :(得分:2)

ProcessBuilder.start方法返回Process类的实例。你可以使用waitFor方法等到创建的进程停止:

    ...
    Process process = processBuilderObject.start();
    process.waitFor();
}

processBuilderObject.wait()是Object wait方法的调用。它用于并发,根本不涉及进程。