我在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);
}
这是正确的方法吗?如果不是为什么?请详细说明。
答案 0 :(得分:1)
不,不是。
首先,最后的循环没有多大意义。 result.get()
将始终返回相同的值:提交的任务仅被执行一次,result.get()
将返回此单次执行的结果。
无论如何,如果初始线程立即停止,等待启动的线程完成,那么启动新线程的重点是什么?在初始线程中执行所有操作会更简单,更高效。
答案 1 :(得分:0)