일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- El
- r
- 팩토리 메소드
- Observer Pattern
- Design Pattern
- 빌터패턴
- a
- builderPattern
- Singleton
- ㅓ
- factory method
- Abstract Factory
- F
- 디자인패턴
- 추상팩토리패턴
- 디자인패턴 #
- 추상 팩토리
- 코틀린
- 프로토타입 패턴
- 함수형프로그래밍
- Functional Programming
- PrototypePattern
- Kotlin
- 싱글톤
- 옵저버 패턴
- ㅋㅁ
- designPattern
- Today
- Total
목록Coroutine (24)
오늘도 더 나은 코드를 작성하였습니까?
Cancelling coroutine execution (코루틴 실행 취소) 오랜시간 실행되는 애플리케이션에서는 백그라운드 코루틴에 대한 세밀한 제어가 필요하다. 예를 들어 사용자가 코루틴을 시작한 페이지를 닫았을 수 있으며 이제 그 결과가 더 이상 필요하지 않다면, job을 취소할수 있어야 한다. launch{ }는 실행 중인 코루틴을 취소하는 데 사용할 수 있는 job을 반환한다. val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a bit println("main: I'm tired of waiting!") job.cancel() // cancels..
* 배경지식 process (프로세스) - 실행중인 응용프로그램() 인스턴스이다, 어플리케이션은 여러개의 프로세스로 구성될 수 있다. - 운영체제로부터 자원(메모리, CPU, 네트워크 등)을 할당받은 작업의 단위 thread(쓰레드) - 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위. - 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체 - 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행 coroutine(코루틴) - 일시적으로 중단 가능한 코드 블록. - 동시에 작동하는 코드 블록을 실행하다는점은 Thread와 유사하다 - coroutine은 특정 스레드에서 실행되는 것이 아니라, 특정 쓰레드에서 실행되다 중단되고 다시 이전 쓰레드와 다른 쓰레드에..
map - 기존 코틀린 collection 확장함수인 map 동일하다. - flow 값을 변환 시켜 보낸다. - 람다로 변환함수만 넘기면 알아서 전부 emit된다. suspend fun main() { val intFlow = (1..10).asFlow().map { it*it } intFlow.collect { int -> println(int) } } transFrom - map과 비슷하지만 단순 값의 변환 보다는 타입을 명식적으로 기재해 타입을 변환할때 사용한다. - 타입을 변환후 emit()사용하여 보낸다. suspend fun main() { val intFlow = (1..10).asFlow().transform { num -> val str = num.toString()+"번" emit(st..
Take - flow에서 특정 개수만 받을경우 사용한다. suspend fun main() { val alphabetFlow = ('a'..'z').asFlow().take(4) alphabetFlow.collect { alphabet -> println(alphabet) } } TakeWhile - flow의 첫번째 보내는 값이 조건을 만족하면 내보낸다. 즉, 조건에 맞는 첫번쨰 값을 내보내는것이 아니라, 첫번째 값이고 조건에 맞아야 한다. suspend fun main() { val intFlow = (1..10).asFlow().takeWhile{ num -> num.equals(1) } intFlow.collect { int -> println(int) } } Buffer( 생산자 소비자 한쪽/양..