synchronized 키워드 이해도 체크
·
언어/Java
1 - 40억까지 더하는 코드를 n 개의 스레드로 병렬로 돌아가도록 짜 보세요.각 스레드가 서로 다른 범위를 나눠서 합계를 구하고,main 스레드는 join()으로 모든 스레드가 끝날 때까지 기다리는 방식을 사용합니다. Thread t1 = new Thread(() -> { /* 1 ~ 10억 합 */ });Thread t2 = new Thread(() -> { /* 10억+1 ~ 20억 합 */ });...t1.start();t2.start();t1.join(); // main 스레드는 여기서 대기t2.join();join(): 스레드가 끝날 때까지 main 스레드가 대기하게 만듭니다.이렇게 하면 main 스레드가 모든 작업이 끝난 뒤 결과를 처리할 수 있어요.synchronized 메서드의 동기화 ..
Set은 왜 내부적으로 Map을 사용할까?
·
언어/Java
Java에서 HashSet, LinkedHashSet, TreeSet 같은 Set 컬렉션을 보면, 그 내부에 Map이 사용되고 있다.근데 왜 Set인데 Map을 쓸까?Set과 Map, 둘의 차이는?자료구조저장 방식Set값(Value)만 저장 (중복 ❌)MapKey → Value 쌍으로 저장 (Key 중복 ❌)Set: 그냥 값만 저장하고, 중복을 허용하지 않는 게 특징이다.Map: Key로 저장하고, Key 중복을 허용하지 않는다.→ 중복을 막는 핵심은 Key!Set이 Map을 쓰는 이유Set의 핵심은 중복 없는 값 저장이다.Map의 Key 구조를 활용하면, 중복 검사 + 저장 + 조회를 이미 검증된 Map 로직으로 효율적으로 재사용할 수 있다.덕분에 코드 중복을 줄이고 유지보수가 쉬워진다.Value 없이..
TreeSet은 왜 이진 탐색 트리 대신 레드-블랙 트리를 사용할까?
·
언어/Java
TreeSet 이란? 중복을 허용하지 않고,자동으로 정렬되는 Set 컬렉션입니다.내부적으로는 TreeMap을 사용하고,TreeMap의 핵심 자료구조가 바로 레드-블랙 트리(Red-Black Tree)이다!이진 탐색 트리란 어떤 문제가 있을까? 이진 탐색 트리는:왼쪽 삽입 순서에 따라 한쪽으로 쏠릴 수 있는 문제가 있다.예시: 오름차순으로 삽입1 → 2 → 3 → 4 → 5 [1] \ [2] \ [3] \ [4] \ [5]이 구조는 거의 LinkedList처럼 변형되어,검색/삽입 성능이 O(log n)에서 O(n)으로 퇴화할 수 있다.레드-블랙 트리(Red-Black Tree)는 어떻게 다른가?레드-블랙 트리는 트리의 균형을 자동으로 맞춰주는 이진 ..