当我们已经拥有向量时,为什么我们需要同步的ArrayLists?

gir*_*iri 1 java

我们什么时候使用synchronized ArrayList?我们已经有了Vector同步.

Uri*_*Uri 15

我认为你错了.ArrayList是不同步的,Vector是.

同步意味着每个操作都是线程安全的 - 如果你同时使用两个线程中的相同向量,它们就不会破坏状态.但是,这会让它变慢.

如果您在单线程环境中工作(或者列表仅限于线程且从不共享),请使用ArrayList.如果您正在使用共享同一集合的多个线程,请使用Vector,或使用ArrayList,但以其他方式同步(例如,手动或通过包装器).

  • Vector几乎已经过时,请参阅http://stackoverflow.com/questions/1386275/why-java-vector-class-is-considered-obsolete-or-deprecated - "Vector会对每个操作进行同步.这几乎不是你的意思想做." (2认同)