多線程對比linkedList和arrayList的add方法

上上一篇對linkedList和arrayList的源碼對比:http://blog.csdn.net/aaashen/article/details/44925181

上一篇對linkedList和arrayList的各種方法進行單線程的對比:http://blog.csdn.net/aaashen/article/details/45011365

本篇用多線程對比,之對比add方法,插10000000條數據。

其中arrayList add 數據花費11615,linkedlist add數據花費4395。

import java.util.ArrayList;
import java.util.LinkedList;

/**
 * Created by aaashen on 2015/4/8. 
 */
public class list_Runnable implements Runnable{
    private ArrayList alist = new ArrayList<Integer>();
    private LinkedList llist = new LinkedList<Integer>();
    public  int n = 10000000;
    //同步
    private  void addAlist()
    {
        while(n>0){
            synchronized(alist){
                alist.add(n);
                n--;
            }
//            System.out.println(Thread.currentThread().getName()+" of "+Thread.currentThread().getThreadGroup().getName()+"add"+n);
        }
    }
    private  void addLlist()
    {
        while(n>0){
            synchronized(llist){
                llist.add(n);
                n--;
            }
//            System.out.println(Thread.currentThread().getName()+" of "+Thread.currentThread().getThreadGroup().getName()+"add"+n);
        }
    }
    @Override
    public void run() {
        addAlist();
//        addLlist();
    }

    public static void main(String args[]){
        long costTime = 0;
        long startTime = 0;
        long endTime = 0;
        //創建一個線程組group,加入3個線程,分別爲每一個線程命名
        list_Runnable ar= new list_Runnable();
        ThreadGroup theGroup=new ThreadGroup("group1");

        Thread thread0 = new Thread(theGroup,ar,"thread0");
        Thread thread1 = new Thread(theGroup,ar,"thread1");
        Thread thread2 = new Thread(theGroup,ar,"thread2");
        //開始計時
        startTime = System.currentTimeMillis();
        thread0.start();
        thread1.start();
        thread2.start();
        while(true){
//            System.out.println("theGroup.activeCount number: "+theGroup.activeCount());
            if(theGroup.activeCount()==0){
                endTime = System.currentTimeMillis();//結束計時
                break;
            }
        }
        System.out.println("共耗時"+(endTime-startTime));
    }

   }




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章