728x90 Backend/Java16 [Java] Lambda Expression(람다 표현식) Lambda Expression(람다 표현식) Lambda Expression(람다 표현식)은 JDK 1.8부터 추가된 것으로 메서드를 하나의 식(expression)으로 표현하는 것을 말합니다. 람다식을 사용함으로써 코드가 간결해지고 또한 가독성이 증가되는 여러 이점 등이 있으며 메서드를 람다식으로 표현하면 메서드의 이름과 반환 값이 없어지므로 람다식을 익명함수(Anonymous Function)라고도 합니다. 1. Lambda Expression 장점 1-1. 불필요한 코드를 줄일 수 있다. 일회성 메서드가 필요할 경우 람다 표현식을 사용하게 되면 익명 클래스와 같이 불필요한 코드를 사용하지 않아도 됩니다. 불필요한 코드를 사용하지 않으므로서 코드가 간결해지고 가독성이 증가되는 장점이 있습니다. //.. 2023. 7. 22. [Java] ThreadLocal ThreadLocal 실무에서 개발자를 괴롭히는 대표적인 문제 중 하나가 바로 동시성 문제입니다. Spring Container는 기본적으로 사용하는 모든 빈들을 싱글톤으로 관리합니다. 즉, 객체의 인스턴스가 애플리케이션에서 하나만 존재한다는 뜻인데 만약 싱글톤 객체가 가변 객체일 경우 여러 개의 Thread가 싱글톤 객체가 갖고 있는 필드를 공유하게 되면 동시성 문제가 발생하게 됩니다. 예제 코드는 Github에서 확인할 수 있습니다. 1. 동시성 문제 예시 조건 1 : 싱글톤 객체인 FieldService는 불변 객체가 아닌 가변 객체일 경우 조건 2 : nameStore 저장하는 시간은 1초 소요 요청 1 : Thread-A가 nameStore에 "userA"를 저장 후 조회 요청 2 : Threa.. 2023. 7. 16. [Java] Garbage Collector Garbage Collector 개발을 하다 보면 수많은 객체, 배열 등이 메모리에 할당됩니다. 하지만 메모리를 할당만 할 뿐 반환을 따로 하지 않는데 그 이유는 JVM에서 GC(Garbage Collector)가 자동으로 메모리를 관리해 주기 때문입니다. GC가 어떻게 메모리를 관리할까요? 할당받은 객체나 배열 중에서 더 이상 사용하지 않는, 즉 참조하지 않는 객체, 배열들을 Garbage라고 부릅니다. 위 그림은 Garbage가 되는 하나의 예시인데 참조변수 b는 처음에 Person("춘향이")를 참조하고 있지만 b = a 대입 연산에 의해 a가 참조하는 Person("홍길동")을 참조하게 되면 기존에 참조 중이던 Person("춘향이") 객체는 더 이상 참조하는 곳이 없기 때문에 Garbage가 됩.. 2023. 7. 16. [Java] JVM 이란? JVM 이란? C와 C++ 등과 같은 언어는 프로그램이 컴파일이 되면 해당 OS에 종속된 기계어 코드로 변환되어 다른 OS에서 실행을 할 수 없지만, 자바에서는 각기 다른 OS에서 자바 프로그램을 실행할 수 있습니다. 그 이유는 바로 JVM이 중계자 역할을 하여 어느 OS에서든 자바 프로그램이 컴파일되어 실행될 수 있기 때문입니다. 1. 자바 프로그램 실행 과정 자바 컴파일러를 통해 Java Source를 컴파일합니다. 컴파일된 Class 파일을 Class Loader에게 전달합니다. Class Loader는 동적로딩을 통해 ByteCode들을 JVM에 있는 Runtime Data Area에 로딩합니다. Execution이 Runtime Data Area에 있는 ByteCode들을 명령어 단위로 한 라인.. 2023. 7. 16. 이전 1 2 3 4 다음 728x90