개발/Java

    [Java] Thread Safety하게 개발하는 방법

    [Java] Thread Safety하게 개발하는 방법

    안녕하세요. 개발자 Jindory입니다. 오늘은 Thread Safty하게 개발하는 방법에 대해서 글을 작성해보려고 합니다. [ 글 작성 이유 ] Java는 Muti-Thread 환경에서 실행되기 때문에, Thread Safety한 개발을 하지 않을 경우 예상치 못한 결과 초래될 수 있음을 인지하여, Thread Safety하게 개발하는 방법에 대해서 정리해보고자 글을 작성하게 되었습니다. Thread Safty란? 우리는 Java 프로그램을 실행하면서 Mult-Thread 환경에서 실행할 수 있습니다. 이를 통해서 여러 스레드가 동시에 작업을 하면서, 절차지향적으로 실행될 때 보다 몇배의 성능으로 프로그램을 실행할 수 있습니다. 하지만 여러 스레드가 동일한 데이터에 대해서 접근하고 처리하는 과정에서 데..

    [Java] Generic의 컴파일 타임에 일어나는 Type Erasure

    [Java] Generic의 컴파일 타임에 일어나는 Type Erasure

    안녕하세요. 개발자 Jindory입니다. 오늘은 Generic이 컴파일 타임에 동작하는 방식에 대해서 글을 작성해보려고 합니다. [ 글 작성 이유 ] Generic을 공부하는 과정에서 Generic Type Erasure라는 과정에 대해서 정리해보고 싶어서 작성하게 되었습니다. Generic Generic은 타입 안정성을 보장하기 위해 JDK 1.5부터 나온 타입입니다. Java에서 소스코드 컴파일시 타입을 체크해주는 기능입니다. 주로 여러가지 타입을 다루는 클래스나 메소드에 적용하여 사용합니다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안전성을 높일 수 있고, 형 변환의 번거로움을 줄일 수 있습니다. Generic이 나오기 이전에는 아래의 코드처럼 객체를 다룰 때, 특정 타입으로 지정하거..

    [Java] ArrayList 길이가 가변적으로 확장되는 방식(JDK 별)

    [Java] ArrayList 길이가 가변적으로 확장되는 방식(JDK 별)

    안녕하세요. 개발자 Jindory입니다. 오늘은 ArrayList에 item을 추가할때 size가 가변적으로 증가하는 이유에 대해서 작성해보고자 합니다. # 글 작성 이유 개발할 때 자주 사용하는 ArrayList의 사이즈를 정하지 않았는데도, ArrayIndexOutOfboundsexception가 발생하지 않고 사이즈가 가변적으로 증가하는 이유에 대해서 조사해보고자 합니다. ArrayList 초기화 설정 ArrayList는 배열을 사용해 Object 자료형을 담을 수 있는 자료구조입니다. 초기에 설정한 길이만큼만 담을 수 있는 Array와는 달리 크기를 가변적으로 조정하여 지정한 Item를 담을 수 있는 가변배열이라고 할 수 있습니다. 위 코드에서와 같이 Object 자료형 배열을 멤버 변수로 가지고..

    [Java] Java Garbage Collection 동작 과정

    [Java] Java Garbage Collection 동작 과정

    안녕하세요. 개발자 Jindory입니다. 오늘은 Java의 Gabage Collection이란 무엇이고 어떻게 GC가 동작하는지에에 대해서 대해서 알아보고자 합니다. # 글 작성 이유 불필요한 객체를 Gabage Collector가 제거하는데 어떤 프로세스로 메모리 정리를 하는지 이해하고자 이 글로 정리하게 되었습니다. GC란 무엇인가? GC란 Garbage Collection의 약자로 메모리들 중 필요없게 된 영역을 해제하는 기능입니다. Java는 Runtime시 Heap 영역에 객체와 객체 변수, 배열등의 데이터가 할당되어 관리되는데, 이를 정리하지 않으면 메모리가 계속 쌓이게 되어 OutofMemory Exception이 발생하여 다운될 수 있습니다. 그리하여 Memory가 쌓이지 않도록 JVM에서..

    [Java] Java에서 Thread Unsafe한 상황 이해하기

    [Java] Java에서 Thread Unsafe한 상황 이해하기

    안녕하세요. 개발자 Jindory입니다. 오늘은 Java에서 Thread Unsafe한 상황에 대해서 대해서 알아보고자 합니다. # 글 작성 이유 Java의 Mutable, Immutable한 변수에 대해서 공부하다보니, Thread-Safe한것과 Unsafe한것이 어떤것인지에 대해서 궁금하게되어 이 글을 작성하게 되었습니다. 동시성과 Thread Safety의 개념 소개 이번 글에서는 동시성(Concurrency)과 Thread Unsafe의 개념에 대해서 소개하고자 합니다. 동시성이란 여러 작업이 동시에 실행되는것을 의미하며, "여러 Thread가 한 Process의 자원을 공유하며 동작하는 것"이라는 의미입니다. 이때 여러개의 Thread가 작업하면서 공유된 Process의 자원에 동시에 접근하여 ..

반응형