JAVA

JAVA

Java volatile

1. Volatile : 휘발성 있는 물질 CS에서 말하는 '휘발성 있는' 이란 메인 메모리를 말한다. 파일 정보를 담는 하드디스크와 다르게, 메인 메모리는 전원을 끄면 사라지는 휘발성 정보를 담고 있기 때문이다. 컴퓨터 동작 과정에서, 하드웨어 메모리는 프로세스가 사용하는 메모리가 적재된다. 프로세스의 메모리에는 코드, 데이터 정보 등이 들어있다. 폰 노이만 구조의 컴퓨터는 메모리에서 명령어를 가져와 명령어 코드의 데이터 및 메모리 주소를 참고하여 일련의 프로그램을 수행하게 된다. 메모리는 강조하건데 컴퓨터 동작 과정에서 없어선 안되는 중요한 것이다. 이렇게 중요한 메모리와 관련된 volatile은 어떤 키워드이며, 언제 사용하는 것일까? 2. 가시성(Visible) visible 문제라는 것이 있다...

JAVA

Java ThreadLocal

1. 간단한 JVM의 메모리 프로세스와 스레드는 모두 CPU의 실행 단위이다. 각각의 메모리 공간과 실행의 흐름(조금 더 하드웨어적인 관점으로는 instruction, 프로그래밍 적으로는 메소드)을 가지고 프로그램의 로직을 수행한다. 프로세스는 프로그램 실행을 위해 필요한 일련의 모든 것들 즉, 힙과 스택 공간, 독립적인 파일 정보 등을 가진다. 그러나 스레드는 프로세스 내의 작은 실행 흐름(조금 더 자바적으로는 메소드)을 처리하기 위해 고유의 스택 영역과 pc를 가질 뿐이다. JVM이 가진 메모리는 크게 스태틱 영역(메소드 영역이라고 부르는 곳도 있는듯), 힙 영역, 스택 영역으로 구분된다. 스태틱 영역엔 기본적으로 사용되는 자바랭 패키지 이외에 프로세스 진행 중 로드되는 클래스 정보, static이 ..

JAVA

Java Stream

스트림은 람다에 대한 기본 지식이 없으면 이해가 힘들다! 스트림 메소드의 인자로 들어가는 함수형 인터페이스에 대한 기본 배경지식이 깔려있어야 한다. 1. Stream? stream이란, iterable한 객체의 각 element에 parallel한 연산을 수행할 수 있도록 도와주는 API를 말한다. Java 8에서 람다식과 함께 추가된 기능으로, 람다식을 이용해서 array나 collection 자료구조의 데이터 '흐름'을 가독성 높고 간결하게 작성할 수 있도록 도와준다. stream의 구조는 일반적으로 '스트림 생성 -> 중개 연산(intermediate operation) -> 종단 연산(terminate operation)'으로 이루어진다. 스트림을 생성하고, 일정 로직을 수행하고, 그 결과값을 받..

JAVA

Java Lambda

1. 람다 표현식 : 익명 함수 Java 8부터 람다(lambda)식을 지원한다. 자바에서 람다식이란, '익명 함수'이다. 익명이란 이름을 특정하지 않음 내지는 이름없음을 뜻하는데, 정확히 무슨 의미일까? 일단 다음과 같은 AddCalculator 인터페이스를 보자. 두 정수를 인자로 받아 특정 계산을 수행하는 operate() 메소드를 가지고 있다. 메소드 body는 없으므로 어떤 로직을 수행할지는 구현체가 결정한다. public interface Calculator { public int operate(int x, int y); } 이제 Calculator 인터페이스를 익명 클래스로 구현한 뒤, 덧셈 연산을 수행하도록 operate() 메소드를 구현하자. 그 뒤 1+2 연산을 수행해보자! public..

김부추
'JAVA' 카테고리의 글 목록 (4 Page)