zoukankan      html  css  js  c++  java
  • Vector与ArrayList区别

    1)Vector的方法都是同步的(Synchronized),是线程安全的;

      ArrayList的方法是线程不安全的。

      由于线程同步必然会影响性能,因此,ArrayList的性能比Vector好。

    请看下面一段代码:

    package com.thread.test;
    
    import java.util.ArrayList;
    import java.util.Vector;
    
    public class ArrayListOfThread {
        
        static ArrayList<Integer> al = new ArrayList<Integer>(10);
        
    //    static Vector<Integer> al = new Vector<Integer>();
        
        public static class AddThread extends Thread{
            @Override
            public void run() {
                for (int i = 0; i < 1000000; i++) {
                    al.add(i);
                }
            }
        }
        
        public static void main(String[] args) throws InterruptedException {
            Thread t1 = new Thread(new AddThread());
            Thread t2 = new Thread(new AddThread());
            t1.start();
            t2.start();
            t1.join();
            t2.join();
            System.out.println(al.size());
        }
    
    }

    由于ArrayList线程不安全,使用ArrayList时,程序就有可能会抛出异常

    Exception in thread "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 163
        at java.util.ArrayList.add(ArrayList.java:459)
        at com.thread.test.ArrayListOfThread$AddThread.run(ArrayListOfThread.java:16)
        at java.lang.Thread.run(Thread.java:745)
    1000054

    但是如果改用线程安全的Vector,则只会输出如下结果:

    2000000

    2)当Vector或ArrayList中的元素超过它的初始化大小时,Vector会将它的容量翻倍,

      而ArrayList值增加50%的大小,这样,ArrayList就有利于节省内存空间。

  • 相关阅读:
    谈谈我对服务熔断、服务降级的理解
    PS-AXI-GPIO-流水灯设计
    立创EDA的使用
    multisim的操作回顾
    verilog的文件流和项目流
    AXI4的主从机的收发机制
    AXI4协议的物理模型
    verilog中的数据类型
    matlab的基本操作
    ARM之AXI总线协议初试
  • 原文地址:https://www.cnblogs.com/java-spring/p/8317373.html
Copyright © 2011-2022 走看看