【发布时间】:2012-09-11 11:47:40
【问题描述】:
我正在使用 java 命令执行批处理文件,并在文本文件中读取批处理数据并放入数据库。例如,我必须使用相同的批处理文件在 15 分钟间隔内运行 430 个节点。所以我将 430 个节点划分为 12 个线程,所以每个线程包含 40 个指向同一个批处理文件的节点。但是并行运行的线程不能等待批处理文件命令完成。我不能等待每个线程,因为所有任务都应该在 15 分钟内完成。有什么建议吗?
下面是运行多线程的一段代码。
for (int i = 0; i < noOfMainThreads; i++) {
// running 12 thread for 40 node
threadArr[i] = new Thread(runnableArr[i]);
runnableArr[i] = new CodeBatchfile(nodeArr,nodeidArr);
}
for (int i = 0; i < noOfMainThreads; i++) {
threadArr[i].start;
}
class CodeBatchfile{
void run(){
for (int i=1;i<nodename.length;i++) {
// exciting batch file using 12 threads.
cmd = filepath + " " + nodenamelocal;
try {
process = Runtime.getRuntime().exec(cmd, null, bdir);
process.waitFor();
}
catch(Exception ex) {
System.out.println("Exception Running batch file" + ex.getLocalizedMessage());
}
}
}
【问题讨论】:
-
"线程无法等待批处理文件命令完成" 为什么不呢?
-
请正确缩进您的代码。这是一团糟,甚至包含不匹配的大括号。
-
是否有任何批处理文件正在执行?你应该在
threadArr[i] = new Thread(runnableArr[i]);之前初始化runnableArr[i]
标签: java multithreading timer