Java的方法中有线程递归,不懂得用什么方法求运行时间

这个程序的目的是为了计算多线程打开文件夹及其子文件所需要的时间。

main方法里设置了一个容量为10的线程池,并且submit了对象。

百度过使用CountDownLatch来对子线程进行监听,不太懂这个类的机制。

尝试放在main方法或者在对象方法体内,打印出来的时间都出现在文件名的中间,说明主线程没有等子线程运行完就执行了打印。

请问下解决的办法。

Java的方法中有线程递归,不懂得用什么方法求运行时间

讨论数量: 2

这样子的写法是可以的,但对你想要实现的目标太复杂了。每次开一个新的线程没有必要,可以直接用循环实现就可以了。要是特别需要开新线程的话开一个就够了,在那里循环。比如:

public void recursion(File f) { File[] files = f.listFiles(); if (files != null && f.length > 0) { for (File file : files) { if (file.isDirectory()) recursion(file); else System.out.println(file); } } }

这是实现你目的的方法。要是得开很多线程的话,newSecurityThreadPool 应该是type ExecutorService,用Executor.newSingleThreadExecutor()初始化。

3年前 评论

我尝试着写了一下,楼主可以到这里看一下, 博客:多线程扫描文件夹耗时方法分析

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!