2015-07-11 57 views
1
new Thread(new Runnable() { 
    @Override public void run() { 
    //calculations #1 
    } 
}).start(); 
new Thread(new Runnable() { 
    @Override public void run() { 
    //calculations #2 
    } 
}).start(); 

1)我想测量任何线程的执行时间,然后求和到总时间变量中。任何人都可以解释我如何? 2)如果线程只有一个循环(for,while)并且循环结束,还会结束线程?测量线程之间的计算时间 - java

+0

检查这个http://stackoverflow.com/questions/180158/how-do-i-time-a-methods-execution-in-java – Sony

+4

你可以编写你自己的'TimedThread extends Thread'。通过覆盖'start()'方法,可以在执行'Runnable'之前和之后花费时间,并将所消耗的时间存储在'TimedThread'的一个字段中。至于第二个问题:线程结束,是('isAlive()'将返回'false'),但是如果你存储了Object,它将被访问(即你可以访问'TimedThread'的'''''')。 – Turing85

回答

0

你基本上需要一个资源,你可以访问和改变形式多个线程。原子整数可能对您的情况有所帮助。看到这个讨论 - Practical uses for AtomicInteger

要回答你的第二个问题 - 我假设你的run方法有一个while循环,当循环退出时,控件甚至存在我们的运行。所以是的,当运行退出线程完成其工作。如果您有兴趣对线程的生命周期进行更详细的讨论,请查看本文 - How to start/stop/restart a thread in Java?