일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- activity
- Python
- TEST
- textfield
- 쿠링
- 코드포스
- Gradle
- Coroutine
- livedata
- Compose
- Rxjava
- pandas
- Codeforces
- 코루틴
- MiTweet
- 프로그래머스
- ProGuard
- architecture
- Kotlin
- 백준
- Hilt
- relay
- android
- AWS
- androidStudio
- GitHub
- boj
- 암호학
- Coroutines
- MyVoca
- Today
- Total
목록Kotlin (30)
이동식 저장소
목차 문제 정의 Volatile? Thread-safe가 필요하다 Thread confinement: fine-grained Thread confinement: coarse-grained Mutual exclusion Actors 참고 문헌 Dispatchers.Default 등의 멀티 스레드 dispatcher를 사용하면 여러 개의 코루틴을 동시에 실행할 수 있다. 이 과정에서 여러 동시성 문제가 발생할 수 있다. 가장 대표적인 문제로 shared mutable state가 있다. 운영체제 과목을 수강한 적이 있다면 잘 알고 있을 것이다. 요약하자면 수정 가능한 값에 여러 스레드가 동시에 접근하려고 할 때 어떻게 해야 하는지에 대한 문제이다. 값을 읽기만 한다면 모를까, 동시에 수정하려고 하면 매우 큰..
다양한 suspending 함수를 조합해 보자. 순차적으로 실행된다 다음의 두 suspending 함수가 있다. 두 함수는 어떤 유용한 계산을 수행한 후 결과를 반환한다. suspend fun doSomethingUsefulOne(): Int { delay(1000L) // 유용한 척 return 13 } suspend fun doSomethingUsefulTwo(): Int { delay(1000L) // 유용한 척.. return 29 } 두 함수를 순서대로 부르면 어떻게 될까? 순서대로 부른다는 것은 작업의 순서가 있다는 의미가 있다. 예를 들어 첫 번째 함수의 결과값에 따라 두 번째 함수를 부를 수도, 부르지 않을 수도 있지 않겠는가? val time = measureTimeMillis { val..
코루틴 코루틴이란 비동기적으로 실행되는 코드를 간단하게 작성하기 위해 사용할 수 있는 설계 패턴이다. 코루틴은 실행 중인 스레드를 중단시키지 않는 suspend를 지원하기 때문에 하나의 스레드에서 여러 개의 코루틴을 실행할 수 있다. 코루틴은 스택조차 없기 때문에 스레드보다도 메모리를 더 절약할 수 있다. 코루틴은 작업 범위를 설정하여 그 안에서 비동기 작업을 구조화한다. 글을 읽다 보면 무슨 말인지 알게 될 것이다. 코루틴은 부모-자식 간의 관계를 설정하여 자식의 취소(코드 중단)를 부모에게 전달할 수 있다. (안드로이드 한정) 많은 Jetpack 라이브러리에서 코루틴을 완벽히 지원하고 있다. 시작하기 전에 사실 코루틴은 코틀린의 기본 패키지에 포함되어 있지 않다. 플러그인을 로드해야 코루틴을 제대로 ..
코틀린에서 스레드를 만드는 방법은 다음의 4가지가 있다. 1. Thread 클래스 상속 class SimpleThread : Thread() { override fun run() { println("Hello! This is thread ${currentThread()}") } } val thread = SimpleThread() 2. Runnable 인터페이스 상속 class SimpleRunnable : Runnable { override fun run() { println("Hello! This is runnable ${hashCode()}") } } val runnable = SimpleRunnable() val thread2 = Thread(runnable) 3. 익명 객체로 만들기 object..
Data Class 클래스의 용도 중 하나로 데이터 전달이 있다. 코틀린에서는 데이터 전달용 객체(Data Transfer Object, DTO)를 편리하게 선언할 수 있도록 ``data class``라는 키워드를 지원한다. 데이터를 표현하는 객체는 다음의 메소드를 지원해야 한다. getters, setters: 프로퍼티 읽기/쓰기용 메소드 ``equals()``: 데이터의 값이 같은지 비교할 때 사용 ``toString()``: 데이터를 문자열로 쉽게 알아보고 싶을 때 사용 ``hashCode()``: ``Map`` 등에서 해시값을 계산할 때 사용 ``copy()``: 객체 복사 더보기 # 코틀린에서의 객체 비교 (펼치기) 자바에서 == 연산자를 사용하면 두 변수가 동일한 객체를 가리키는지 검사한다. ..