0

我正在用 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);
}

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

4

2 回答 2

1

不,这不对。

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

无论如何,如果初始线程立即停止,等待启动的线程完成,那么启动一个新线程有什么意义呢?在初始线程中做所有事情会更简单,更高效。

于 2013-01-31T12:32:03.970 回答
0

确保以下方法已同步

FileHandler.removeFolder()

Java中的同步

于 2013-01-31T12:31:56.143 回答