본문 바로가기

전체보기/Java

(3)
[Java] Stream 파헤치기(1) - Stream을 사용해야하는 이유 이번 글에서는 Java 8에서 소개된 Stream에 대해 정리해보겠습니다. Stream은 다음과 같은 불편함을 해결하기 위해 만들어졌습니다. Collection을 사용하는 코드를 반복적으로 구현 병렬적으로 Collection을 처리하기 어려움 Collection을 사용하는 코드를 반복적으로 구현 해당 내용을 설명하기 위해 간단한 쿼리문을 가져와봤습니다. SELECT id FROM transactions WHERE type = 'GROCERY' ORDER BY value DESC; 해당 쿼리문은 특정 type을 갖는 row들에 대해 높은 value를 갖는 순서대로 id를 조회하는 쿼리입니다. 우리는 위와 같은 쿼리문을 사용할 때, 해당 과정에 대한 깊은 이해 없이도 쉽게 사용할 수 있습니다. 위와 동일하게..
[Java]Immutable class와 thread-safe Immutable이란 '불변의'라는 뜻으로 Immutable class는 저장된 값을 변경할 수 없는 클래스를 의미합니다. Java에서는 대표적으로 String, Integer, Double 등이 이에 속합니다. public static void main(String[] args) { String str = "new String"; String cpy = str; str = "edited"; System.out.println(cpy); System.out.println(cpy == str); } 위 코드의 결과는 다음과 같습니다. new String false 같은 객체를 가르키기 때문에 cpy의 값도 변할 것 같지만 String은 Immutable 객체기 때문에 값이 변경되는게 아니라 새로운 객체가 생..
[Java]ThreadLocal이란? ThreadLocal은 이름에서 알 수 있듯이 각 thread 내부에서 사용되는 지역변수를 관리할 수 있는 클래스입니다. 설명을 돕기위해 간단한 코드를 가져와봤습니다. public class ThreadLocalTest { private static ThreadLocal local = ThreadLocal.withInitial(Math::random); public Double get(){ return local.get(); } } public class Execute { public static void main(String[] args) { new Thread(() -> { ThreadLocalTest t = new ThreadLocalTest(); System.out.println("first th..