본문 바로가기

자바

[JAVA] 벡터 Vector

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