我有100个文件。有些文件大小为1mb,有些文件大小为100mb。我想利用多线程读取所有文件,并且想知道特定线程读取单个文件所花费的时间。最后,我想打印出该线程的时间。
注意:我不希望平均单个文件。
答案 0 :(得分:1)
概述
因此,有几种方法可以实现此目标,具体取决于您所需的准确性水平。让我们在下面进行调查。
currentTimeMillis()
long start = System.currentTimeMillis();
// Your File Operation Logic
long end = System.currentTimeMillis();
long timeElapsed = end - start;
此方法的度量值为wall-clock time,因此可能会产生一些误差,但是出于测试目的,这可能就足够了。另外,这将以毫秒返回timeElapsed
。
nanoTime()
long start = System.nanoTime();
// Your File Operation Logic
long end = System.nanoTime();
long timeElapsed = end - start;
此方法与currentTimeMillis()
不同,因为它的度量单位为纳秒。此外,javadocs状态:
此方法只能用于测量经过时间,与系统或挂钟时间的任何其他概念无关
即时和持续时间
Instant start = Instant.now();
// Your File Operation Logic
Instant end = Instant.now();
long timeElapsed = Duration.between(start, end).toMillis();
这些类'是不可变的,线程安全的,并利用它们自己的时间范围。但是,您必须使用 Java 8 或更高版本才能使用。
实施