반응형 language/java87 번외편 - Java Comparator vs JavaScript sort() 번외편 - Java Comparator vs JavaScript sort()개발하다 보면 이런 코드를 자주 본다.Javausers.sort( (u1, u2) -> Integer.compare( u1.getAge(), u2.getAge() )); JavaScriptusers.sort( (a, b) => a.age - b.age); 처음 보면 거의 같은 코드처럼 보인다.실제로 둘 다:두 객체를 비교하는 규칙을 전달한다. 는 점에서 매우 비슷하다.1. Java Comparator예제Comparator comparator = (u1, u2) -> Integer.compare( u1.getAge(), .. 2026. 6. 4. Factory Method Pattern (팩토리 메서드 패턴) Factory Method Pattern (팩토리 메서드 패턴)Java를 공부하다 보면 객체를 생성할 때 항상 new 를 사용한다고 생각하기 쉽다. Animal animal = new Dog(); 하지만 객체 생성 로직이 복잡해지고 종류가 많아지면 코드 곳곳에 new 가 흩어지게 된다. if (type.equals("DOG")) { return new Dog();}if (type.equals("CAT")) { return new Cat();}if (type.equals("TIGER")) { return new Tiger();} 새로운 동물이 추가될 때마다 코드를 수정해야 한다.이 문제를 해결하기 위해 등장한 패턴이 Factory Method Pattern 이다.1. Factory Meth.. 2026. 6. 1. Static Factory Method (정적 팩토리 메서드) Static Factory Method (정적 팩토리 메서드)Java를 공부하다 보면 다음과 같은 코드를 자주 보게 된다. LocalDate.now();Optional.of(value);List.of("A", "B", "C");ResponseEntity.ok(data);LoggerFactory.getLogger(UserService.class); 처음에는 단순히 편의 메서드라고 생각하기 쉽지만, 사실 이들은 모두 Static Factory Method(정적 팩토리 메서드) 를 활용한 대표적인 예시다.실무에서는 생성자보다 정적 팩토리 메서드를 사용하는 경우가 매우 많다.1. Static Factory Method란?객체를 생성할 때 생성자를 직접 호출하지 않고, static 메서드를 통해 객체를 생성하는 .. 2026. 6. 1. Virtual Thread (Java 21) 완벽 이해하기 Virtual Thread (Java 21) 완벽 이해하기지금까지 우리는 Java 동시성의 발전 과정을 배웠다.Thread ↓Thread Pool ↓ExecutorService ↓CompletableFuture ↓ForkJoinPool 그런데 이 모든 기술에는 공통 문제가 하나 있었다.스레드가 비싸다.그래서 Java 21에서 드디어 등장한 것이:Virtual Threads이다.1. 왜 등장했을까?기존 Thread는 사실상OS Thread 이다.예: new Thread(...) 실행.실제로는Java Thread↓OS Thread↓CPU 연결.2. 문제OS Thread는 매우 비싸다.생성 비용.Stack 생성OS 등록Context Switch 발생.3. 그래서 실무에서는 new Thread() 를 잘 안 쓰.. 2026. 6. 1. 병렬 Stream(parallelStream) 주의점 완벽 이해하기 병렬 Stream(parallelStream) 주의점 완벽 이해하기많은 개발자가 처음 병렬 Stream을 보면 감탄한다. list.stream() 를 list.parallelStream() 으로만 바꾸면멀티코어 사용↓성능 향상 이 될 것 같기 때문이다.하지만 실무에서는 오히려:parallelStream() 때문에성능이 더 느려지는 경우 가 정말 많다.1. Stream vs parallelStream일반 Stream list.stream() 병렬 Stream list.parallelStream() 차이stream() ↓순차 실행parallelStream() ↓병렬 실행 2. 예제 list.parallelStream() .forEach(System.out::println); 내부적으로ForkJoinPo.. 2026. 6. 1. ConcurrentHashMap 동시성 처리 완벽 이해하기 ConcurrentHashMap 동시성 처리 완벽 이해하기이전 글에서:HashMapsynchronizedCASAtomicThread-safe Collection을 배웠다.이번에는 면접에서 정말 자주 나오는:ConcurrentHashMap은 어떻게 Thread-Safe를 보장하나요?를 설명한다.특히 중급 이상 면접에서는:HashMap과 ConcurrentHashMap 차이ConcurrentHashMap 내부 구조CAS 사용 위치synchronized 사용 위치 까지 자주 물어본다.1. HashMap부터 다시 보자 Map map = new HashMap(); put() map.put("A", "1"); 동작.Hash 계산 ↓Bucket 찾기 ↓Node 추가 2. 문제Thread A map.put.. 2026. 6. 1. 이전 1 2 3 4 ··· 15 다음 반응형