Ran e:获取此线程运行了多少秒(e7 ran)

嘿,我在我的代码中有这个函数:

public synchronized void finished()
{
    howManyDone++;
    log.append("Finished creating board "+this.howManyDone+"\n");
    if(howManyDone == boards.length)
        JOptionPane.showMessageDialog(log, "All Boards Were Created.","Attention",JOptionPane.WARNING_MESSAGE);
}

我想添加到 log.append 命令中有多少 evrey 线程在秒中运行。我试图做到这一点:

public synchronized void finished()
{
    long start = System.nanoTime();
    howManyDone++;
    long end = System.nanoTime();
    long estTime = end - start;
    double seconds = (double)estTime/1000000000;
}

和比打印秒在每个时间是这样的:

log.append("Finished creating board " +this.howManyDone+ " in "+seconds+"\n");

但是我在日志中得到的数字是这样的:6.00 E-7 等等...我做错了什么?

谢谢

0

除非您能够记录线程开始工作时的系统时间,否则不可能获得总运行时间。仅在完成的函数开始时调用它是不够的。

对于一个解决方案,您可以创建一个Thread子类,跟踪它运行的时间,例如:

public cl TimedThread extends Thread {
    private long startTime;
    private long endTime;
    public TimedThread(Runnable r) {
        super(r);
    }
    @Override
    public void run() {
        startTime = System.nanoTime();
        super.run();
        endTime = System.nanoTime();
    }
    public long getRunDuration() {
        return endTime - startTime;
    }
}

然后使用TimedThreads 而不是Threads,在那里你需要一个定时计算(假设你已经控制了那部分代码)。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(985)
代码居中怎么打:我怎么能打nextauth与邮递员登录
上一篇
工控软件开发:IVR软件开发探讨(ivr platform)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(35条)