일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swea
- 스택
- 백준
- dfs
- 유니온 파인드
- 프로그래머스
- Network
- 플로이드-와샬
- 후니의 쉽게 쓴 시스코 네트워킹
- 구현
- 문자열
- mst
- 세그먼트 트리
- 그리디
- 동적계획법
- 시뮬레이션
- Effective Java
- CS
- 알고리즘
- JUnit 5
- 투 포인터
- 에라토스테네스의 체
- BFS
- 완전탐색
- Kotlin
- 이분탐색
- 백트래킹
- 위상정렬
- 수학
- java
목록전체 글 (291)
반갑습니다!
코루틴이 쓰레드를 대체할 수 있다는 것은 앞의 예제들을 학습하면서 알 수 있었다. 이번에는 코루틴이 실제로 어떻게 동작하는 것인지 알아보도록 하자. CPS (Continuation Passing Style) 코루틴은 컴파일러에 의해서 CPS (Continuation Passing Style)로 변환된다. fun postItem(item: Item) { val token = requestToken() val post = createPost(token, item) processPost(post) } 이런 형태의 코드가 있다고 하자. 이 코드는 내부적으로 다음과 같은 코드로 변환된다. fun postItem(item: Item) { requestToken { token -> val post = createPo..
이번엔 suspend 함수들을 어떻게 활용해야할지 알아보자 Sequential by default 네트워크로부터 데이터를 전송받거나 복잡한 연산을 하는 등의 비동기 처리가 필요한 작업을 수행한다고 가정해보자. 그리고 그러한 비동기 작업들을 순차적으로 수행하고 싶다면 어떻게 해야할까? 코루틴은 기본적으로 순차적으로 실행된다. 그렇기에 비동기 작업을 순차적으로 실행하는 경우 아래와 같이 코드를 작성할 수 있다. import kotlinx.coroutines.* import kotlin.system.* fun main() = runBlocking { val time = measureTimeMillis { val one = doSomethingUsefulOne() val two = doSomethingUsefu..
Cancelling coroutine execution 이번엔 코루틴을 멈추는 방법을 알아보자. 이전의 예제들을 보면서 launch 를 통해 Job객체를 반환받을 수 있음을 알았다. 코루틴을 멈추는 방법은 반환받은 Job 객체에 구현된 cancel() 함수를 실행하는 것이다. import kotlinx.coroutines.* fun main() = runBlocking { val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // 1300ms동안 기다리기 println("main: I'm tired of waiting!") job.cancel() //job 취..
Your first coroutine import kotlinx.coroutines.* fun main() { GlobalScope.launch { // 백그라운드에서 새로운 코루틴 실행 delay(1000L) // 1초간 논블로킹 딜레이 println("World!") } println("Hello,") // 코틀린이 지연되는 동안 메인 쓰레드 실행 Thread.sleep(2000L) // 2초 동안 프로그램이 살아있음 } /* 실행결과 Hello, World! */ 위 코드를 실행해보면 쓰레드를 실행한 것처럼 동작함을 알 수 있다. 여기서 GlobalScope로 생성된 블럭을 'Coroutine Scope' 라고 한다. 그리고 launch를 통해 코루틴을 실행시키는데, 이러한 역할을 하는 것을 'Co..
현재 Google Play Sotre에 올라온 어플리케이션 중에서 70% 이상이 Kotlin을 사용함. Coroutine은 Kotlin의 주요 기능 중 하나이다. Coroutine 실시간 처리를 쉽게 작성할 수 있도록 해주는 기법. Google에서 공식적으로 권장함. routine의 일종으로 'Co'는 with 또는 together의 뜻을 지니고 있으므로 '협동 루틴' 이라고 할 수 있음 코루틴은 이전에 자신의 실행이 마지막으로 중단되었던 지점부터 다음의 장소에서 실행을 재개한다. 일반적인 루틴(함수)는 중단했다가 다시 시작할 수 없지만 코루틴에서는 가능하다. 역사 도널드 커누스에 따르면 멜빈 콘웨이는 195년 코루틴이라는 용어를 만들었고, 이를 어셈블리 프로그램에 적용했다...