Java - System.identityHashCode()와 hashCode()의 차이점

System.identityHashCode()는 객체의 고유한 hashcode를 리턴하는 메소드입니다. hashCode()는 모든 객체의 부모 클래스인 Object 클래스에 정의되어있습니다. 그리고 하위 클래스가 이 메소드를 오버라이드할 수 있습니다. 그렇기 때문에 객체는 다르지만 hashcode는 동일한 값을 리턴하는 경우가 있습니다.

30 Jun 2020

Kotlin - Reified를 사용하는 이유?

Reified 키워드는 Generics로 inline function에서 사용되며, Runtime에 타입 정보를 알고 싶을 때 사용합니다. Reified가 없다면 타입 정보를 담고 있는 객체를 인자로 넘겨야해서 파라미터 개수가 늘어납니다. 하지만 Reified를 사용하면 runtime에 정보를 알 수 있고, 리턴 타입이 다른 함수를 오버로딩할 수 있습니다.

28 Jun 2020

Kotlin - Sealed class 구현 방법 및 예제

Sealed class는 Super class를 상속받는 Child 클래스의 종류 제한하는 특성을 갖고 있는 클래스입니다. Enum과의 차이점은 Enum은 single instance만 만들 수 있는 반면에 Sealed class는 여러개의 객체를 생성할 수 있습니다. 또한 Generics로 클래스를 정의할 수도 있습니다.

27 Jun 2020

Android - SharedPreferences로 간단한 데이터 저장 방법

SharedPreferences를 이용하여 간단한 데이터를 저장할 수 있습니다. SQLite 같은 DB를 이용하기엔 번거로울 때 사용하면 좋습니다. SharedPreferences는 App의 개별 데이터 저장소에 xml파일을 만들고, 그 파일에 Integer, String 등의 데이터를 저장하거나 읽습니다. key, value 형태로 데이터를 저장하며 put, get 메소드를 제공합니다.

21 Jun 2020

Android - AlarmManager로 알람을 등록하는 방법

AlarmManager 통해 정해진 시간에 알람을 받을 수 있습니다. App이 실행 중이 아닐 때라도 알람을 받아 어떤 작업을 처리할 수 있습니다. RTC, Elapsed time을 기준으로 알람을 발생시킵니다. 보통 doze mode에서는 알람을 발생시키지 않지만 원한다면 발생하도록 요청할 수 있습니다. 그리고 시스템 리소스를 효율적으로 사용하기 위해 알람이 정확한 시간이 발생되지 않을 수 있습니다.

20 Jun 2020

Java - Thread 생성, 실행, 정지하는 방법

Java에서 Thread를 생성하고 실행, 정지하는 방법에 대해서 알아보겠습니다. Thread를 상속받아 구현할 수 있지만, Runnable을 Thread에 전달하여 동작하도록 할 수도 있습니다. join()으로 쓰레드의 작업이 완료될 때까지 기다릴 수 있습니다. 종료는 flag방식과 인터럽트 방식으로 구현할 수 있습니다. stop()은 쓰레드를 안전하게 종료하지 않아 사용하면 안됩니다.

17 Jun 2020

Java - CompletableFuture 사용 방법

CompletableFuture는 Future와 CompletionStage를 구현한 클래스입니다. Future이지만 supplyAsync(), runAsync()를 이용하여 직접 쓰레드를 생성하지 않고 async로 작업을 처리할 수 있습니다. 그리고 여러 CompletableFuture를 병렬로 처리하거나, 병합하여 처리할 수 있게 합니다. 또한 Cancel, Error를 처리할 수 있는 방법을 제공합니다.

16 Jun 2020

Java - CountDownLatch 사용 방법

CountDownLatch는 어떤 쓰레드가 다른 쓰레드에서 작업이 완료될 때 까지 기다릴 수 있도록 해주는 클래스입니다. countDown()이 호출되면 Latch의 수가 1개씩 감소하며, await()은 Latch의 숫자가 0이 될 때까지 기다립니다. 이 두개의 메소드를 이용하여 병렬처리, 멀티쓰레딩으로 작업을 처리하도록 만들 수 있습니다.

15 Jun 2020
codechachaCopyright ©2019 codechacha