728x90
/* Vector란? */
Vector는 ArrayList와 동일한 내부 구조를 가지고 있다. 차이점은 Vector는 동기화된 (synchronized) 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 Vector()메소드를 실행할 수 없다. 그렇기 때문에 멀티 스레드 환경에서는 안전하게 객체를 추가 또는 삭제할 수 있다. -> 이 말인 즉슨, Vector()메소드들이 여러 스레드에 의해 동시에 호출되더라도, 한 시점에 하나의 스레드만이 메소드를 실행할 수 있도록 제한.
/* 테스트 */
package Collections;
import java.util.Vector;
public class LearnVector {
public static void main(String[] args){
Vector<Integer> vector = new Vector<>();
Thread thread1 = new Thread(){
@Override
public void run() {
for(int i=0; i<100; i++){
vector.add(i);
}
}
};
Thread thread2 = new Thread(){
@Override
public void run() {
for(int i=0; i<100; i++){
vector.add(i);
}
}
};
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(vector.size());
}
}
vector에 200개가 저장되어 있음을 알 수가 있다. Vector 대신 ArrayList를 이용하면 실행결과가 다르게 나타나거나 에러가 발생할 수 있다.
728x90
'자바' 카테고리의 다른 글
[JAVA] 불변 객체 & 불변 클래스 (0) | 2024.03.13 |
---|---|
[JAVA] 컬렉션 - LinkedList (0) | 2024.02.07 |
[JAVA] 컬렉션 - ArrayList (0) | 2024.02.05 |
[Java] Predicate 인터페이스 (1) | 2023.12.20 |
[JAVA] 람다식 (Lambda Expression) (0) | 2023.11.23 |