1

有谁知道,为什么这样的蚂蚁任务:

public void execute() {
    Timer timer = new Timer();
    TimerTask action = new TimerTask() {
        @SuppressWarnings("ResultOfMethodCallIgnored")
        public void run() {
            String urlsForCheckPath = arachniBinPath + "urls.txt";
            List<String> urlsForCheck;
            try {
                urlsForCheck = FileUtils.readLines(new File(urlsForCheckPath));
                if (urlsForCheck != null) {
                    for (String urlForCheck : urlsForCheck) {
                        new File(arachniLogPath).delete();
                        clearTemporary(urlForCheck);//if something remains after exceptions
                        logger.info(urlForCheck + " previous log and possibly remaining temporary files deleted.");
                        checkURL(urlForCheck);
                        urlForCheck = urlForCheck.replace("/", "-");
                        convertAndSend(urlForCheck);
                        clearTemporary(urlForCheck);
                        logger.info(urlForCheck + " temporary files deleted.");
                    }
                }
            } catch (Exception e) {
                log(e);
            }
        }
    };
    timer.schedule(action, delayBeforeStart);
}

在 main 方法中正常,但在之后停止

 logger.info(urlForCheck + " previous log and possibly remaining temporary files deleted.");

通过ant执行期间没有例外?如何修复?

4

1 回答 1

1

我认为你应该阅读这个答案。 Java:等待 TimerTask 完成后再继续执行

小例子:

protected final Timer timer = new Timer();

public void execute() {
   CountDownLatch latch = new CountDownLatch(1);
   timer.schedule(new TimerTask() {
       public void run() {
       }
   }, delayBeforeStart);
   try {
       latch.await();
   } catch (InterruptedException e) {
       log(e);
   }
   timer.cancel();
}
于 2015-04-08T11:46:02.893 回答