Kategorie szkoleń | Egzaminy | Kontakt

Odpowiedź (1)

  • 3

Vector to stary typ kolekcji, która zachowuje się tak, jak lista.

Zasadniczą różnicą pomiędzy java.util.Vector a java.util.ArrayList jest to, że metody w  ArrayList nie są synchronizowane, a w Vector - tak.

Oznacza to, że w aplikacjach wielowątkowych można bezpiecznie używać kolejcji Vector. Natomiast tam, gdzie nie wykorzystujemy wielowątkowości ArrayList będzie bardziej efektywna, bo nie ma narzutu związanego z synchronizacją.

Jeśli jednak nasza aplikacja korzysta z wielowątkowości i zależy nam na użyciu ArrayList, to należy ją "zabezpieczyć" w następujący sposób:

List<String> lista = Collections.synchronizedList(new ArrayList<>());

Uwaga: Iteracja po takiej kolekcji nadal nie jest bezpieczna wielowątkowo!

Jeszcze lepszym pomysłem na użycie kolekcji w środowisku wielowątkowym jest wykorzystanie którejś z kolekcji z pakietu java.util.concurrent
(od Java SE5)

  • Odpowiedział
  • @ | 01.02.2016
  • TRENER MODERATOR ALTKOM AKADEMII