최원종의 개발 블로그

Vector - 컬렉션 본문

Java/JAVA 유용한 클래스

Vector - 컬렉션

chl6698 2026. 3. 30. 09:10

ArrayList vs Vector

  ArrayList  Vector
사용법 동일 동일
멀티스레드 안전 안전하지 않음 안전함
속도 빠름 동기화로 약간 느림
사용 상황 단일 스레드 멀티스레드 (소켓 서버 등)

 

단일 스레드 일반 프로그램 → ArrayList
멀티스레드 소켓 서버 등  → Vector

 


 

-실습 코드

package server;

import java.util.Vector;

public class ChatRoomSimulator {

    //공유 자원
    private static Vector<String> userList = new Vector<>();

    public static void main(String[] args) throws InterruptedException {
        //ArrayList 와 상용법 동일

        Vector<String> list = new Vector<>();

//        list.add("철수");
//        list.add("영희");
//        list.remove("영희");
//        list.get(0);
//        list.size();
//        list.contains("영희");
//
//        for(String name : list){
//            System.out.println(name);
//        }

        System.out.println("=== 채팅방 접속자 시뮬레이션 ===");

        //3명이 동시에 접속
        //람다 표현식이다
        //Thread t1 = new Thread(() -> {});

        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                userList.add("철수");
                System.out.println("[접속] 철수 | 현재 " + userList.size() + "명");
            }
        });

        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                userList.add("영희");
                System.out.println("[접속] 영희 | 현재 " + userList.size() + "명");
            }
        });

        Thread t3 = new Thread(new Runnable() {
            @Override
            public void run() {
                userList.add("민준");
                System.out.println("[접속] 민준 | 현재 " + userList.size() + "명");
            }
        });

        t1.start();
        t2.start();
        t3.start();

        t1.join();
        t2.join();
        t3.join();

        System.out.println("최종 접속자 : " + userList);

        //영희 퇴장
        userList.remove("영희");
        System.out.println("영희 퇴장 후 : " + userList);
    }//end of main

}

 

-출력 화면