你可以这样写
[code="java"]
do {
//判断是否完整
boolean completeness = true;
for (int i = 0; i < nameLongth.length; i++) {
if (!nameLongth[i].equals("sunlineTELFile.ctl")) {
completeness = false;
break;
}
}
//数据不完整,则等到20分钟后重新执行bat文件,等待20分钟需要怎么写?
Thread.sleep(TimeUnit.MINUTES.toMillis(20));
if (completeness) {
try {
//你这种写法有可能造成没有执行,解决办法看[url=http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=1]这帖子[/url]
process = Runtime.getRuntime().exec("D:\\etlpath\\BillFtp\\ftpdown.BAT");
} catch (IOException e) {
e.printStackTrace();
}
}
//跳出
} while (!completeness);
[/code]
你也可以这样写
[quote]
final ScheduledThreadPoolExecutor executror = new ScheduledThreadPoolExecutor(1);
executror.scheduleAtFixedRate(new Runnable() {
public void run() {
//To change body of implemented methods use File | Settings | File Templates.
// 1. 判断数据是否完整
for (int i = 0; i < nameLongth.length; i++) {
if (!nameLongth[i].equals("sunlineTELFile.ctl")) {
return;
}
}
try {
process = Runtime.getRuntime().exec("D:\\etlpath\\BillFtp\\ftpdown.BAT");
} catch (IOException e) {
e.printStackTrace();
}
executror.shutdownNow();
}
// 0 表示延时0秒启动,5表示每5秒钟重复一次
}, 0, 20, TimeUnit.MINUTES);
[/quote]
你都可以试试看