这是在单独的线程上删除文件夹的正确方法吗?

时间:2013-01-31 12:27:49

标签: java multithreading

我在java中运用我的多线程技能。下面是一段代码,用于删除文件夹并确保:

if (freshDB) {
    LOG.warn("Refreshing the database!");
    ExecutorService executorService = Executors.newSingleThreadExecutor();
    final Future<Boolean> result = executorService.submit(new Callable<Boolean>() {
        public Boolean call() {
            return FileHandler.removeFolder(dbLocation);
        }
    });

    do {
        // makes sure the folder is removed
    }
    while (result.get() == false);
}

这是正确的方法吗?如果不是为什么?请详细说明。

2 个答案:

答案 0 :(得分:1)

不,不是。

首先,最后的循环没有多大意义。 result.get()将始终返回相同的值:提交的任务仅被执行一次,result.get()将返回此单次执行的结果。

无论如何,如果初始线程立即停止,等待启动的线程完成,那么启动新线程的重点是什么?在初始线程中执行所有操作会更简单,更高效。

答案 1 :(得分:0)

确保以下方法是同步

FileHandler.removeFolder()

Synchronization in Java