Java 程序运行时间(在循环中,仅显示一次)

Java 程序运行时间(在循环中,仅显示一次),java,multithreading,time,thread-safety,Java,Multithreading,Time,Thread Safety,我想在代码中测量程序运行时(仅搜索最小值和最大值的时间),我的问题是搜索最小值和最大值在循环中,运行时显示的数量也是循环中的x倍,因为我可以测量循环中的时间并在屏幕上只显示一个结果 long realTime = System.currentTimeMillis(); for (int i = 0; i < PARTITIONS; i++) { final int partition = i; threads[i] = ne

我想在代码中测量程序运行时(仅搜索最小值和最大值的时间),我的问题是搜索最小值和最大值在循环中,运行时显示的数量也是循环中的x倍,因为我可以测量循环中的时间并在屏幕上只显示一个结果

 long realTime = System.currentTimeMillis();
        for (int i = 0; i < PARTITIONS; i++) {
            final int partition = i;
            threads[i] = new Thread(new Runnable() {
                @Override
                public void run() {
                    // find min,max
                    int from = arrayToSearch.length * partition / PARTITIONS;
                    int to = arrayToSearch.length * (partition + 1) / PARTITIONS;
                    int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
                    for (int j = from; j < to; j++) {
                        min = Math.min(min, arrayToSearch[j]);
                        max = Math.max(max, arrayToSearch[j]);
                    }
                    partitionMin[partition] = min;
                    partitionMax[partition] = max;
                    long execcutionTime = System.currentTimeMillis() - realTime;
                    System.out.println("exec time: " + execcutionTime + "ms");
                }

            });
long realTime=System.currentTimeMillis();
对于(int i=0;i

在这个程序中,PARTITIONS=4,因此屏幕显示4x执行时间。

只需将这两行代码放在循环之外:


long executiontime=System.currentTimeMillis()-realTime;System.out.println(“exec time:+executiontime+“ms”);
如果您不关心显示哪个结果,那么最简单的方法就是仅当
分区
为0时才打印执行时间,如下所示:

if (partition == 0) {
    System.out.println("exec time: " + execcutionTime + "ms");
}

这并不能解决问题