各位通道得朋友,我看了许多关于我同样问题得论坛,可是都没有实际得例子来说明,他们到底有什么区别,什么时候运用呢?  请大家帮我下,我发现面试当中很多地方都是这个问题!

解决方案 »

  1.   

    请搜索Vector ArrayList....网络上描述很清楚....
    建议lz复习线程安全的知识咩....
      

  2.   

    Vector是线程 安全的
    而ArrayList不是
    其它都差不多
      

  3.   

    线程安全的知识咩....羊```SORRY 昨天刚看过电影《疯羊》,有点过敏
      

  4.   

    需要考虑线程安全的时候用Vector
    反之用ArrayList
      

  5.   

    需要同步的用Vector
    反之用ArrayList
      

  6.   

    如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的
    比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。 在单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1; 
    而如果是在多线程情况下,比如有两个线程,线程 A 先将元素存放在位置 0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B也向此 ArrayList 添加元素,因为此时 Size 仍然等于 0 (注意哦,我们假设的是添加一个元素是要两个步骤哦,而线程A仅仅完成了步骤1),所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增加 Size 的值。 
    那好,现在我们来看看 ArrayList 的情况,元素实际上只有一个,存放在位置 0,而 Size 却等于 2。这就是“线程不安全”了。
      

  7.   

    需要线程同步时用Vector,保证线程安全,不考虑线程同步和安全时可以用ArrayList
      

  8.   


      建议使用ArrayList 
      

  9.   

    瞎扯! ArrayList在任何方面都比Vector强!至于ArrayList为什么不是线程安全的, 这是由Java 1.3以后的新集合类的设计方式决定的, Java 1.3加入的新集合类默认都不是线程安全的. 因为可以用Collections.SynchronizedCollection()方法得到任何集合类的线程安全版本.在一个不需要兼容java 1.3以前版本的程序中, 请放弃使用Vector, Stack和Hashtable这些遗留类. 它们的问题很多.
      

  10.   


    Vector是线程同步的
    ArrayList是线程不同步的
      

  11.   

    这么说对vector操作是一个原子操作,
    而对arraylist操作不是一个原子操作?
      

  12.   

    已经有很多年没用Vector和Hashtable了,事实上我根本不用这两个类。
    包括Collections.SynchronizedCollection()也从来不用。
    Vector就能保证线程安全吗?看看这段代码
    public Object getFirst(Vector v)
    {
        if (v.size() > 0)
            return v.remove(0);
        else
            return null;
    }
    public List getList(Hashtable map,Object key)
    {
        if(map.containsKey(key))
            return (List)map.get(key);
        ArrayList ar = new ArrayList();
        map.put(key,ar);
        return ar;
    }问题:上面的代码是线程安全的吗?问题出在哪里?
    用Collections.SynchronizedCollection就能保证线程安全吗?
      

  13.   

    两者都是使用数组的方式存储数据,唯一的区别在于:
    Vector使用了Synchronized方法,所以在效率上不如ArrayList~~~