日期:2014-05-20  浏览次数:20681 次

多线程运行时间计算问题

for(int i=0,j=list.size();i<j;i++){
        Thread t = new xxxThread(xx);
t.start();
}
//该如何计算第一个线程开始和最后一个线程结束;
多线程 thread java

------解决方案--------------------
有一个简单思路。
isAlive()可以查看该线程是否结束。
可以在开始第一个线程的时候获得时间,期间循环检查是否有线程未结束,直到全部线程都结束,再次获得时间,做减法
------解决方案--------------------
引用:
引用:
在xx类的构造方法获取开始时间,并获取for循环的j,如果j=0,获取开始时间,如果j=list.size()-1,则在构造的最后调用加入某XX构造方法

 Java code?123456789public XX(int x ,int size){   if(x=0){        System.out.println(time);    } ……


你把需要运行的执行体放在构造方法的中间啊,执行体不能包含多线程
------解决方案--------------------
利用CountDownLatch这个类,countDown和await这两个方法很有用
------解决方案--------------------
参考9楼,把你的线程在启动的时候放到指定的线程组里。
代码如下
public static void main(String[] args) {
        ThreadGroup thGroup = new ThreadGroup("MyTest");
        
        long startTs = System.currentTimeMillis();
        for(int i=0;i<10;i++){
            final int id = i;
            Thread subThread = new Thread(thGroup, new Runnable(){
                // Create a thread which will run random time 0~5 sec.
                public void run() {
                    int myId = id;
                    int sec = (int) (Math.random()*5000);
                    try {
                        Thread.sleep(sec);
                    } catch (InterruptedException e) {
                    }
                    System.out.printf("Thread %d runed %f sec\n", myId, sec/1000.0);
                }
            });
            subThread.start();
        }
        // wait all thread down.