Coroutine
-
[Study] 코틀린 동시성 프로그래밍 - 3장. 라이프 사이클과 에러 핸들링LANGUAGE/KOTLIN 2022. 9. 5. 23:06
2장에서는 안드로이드 UI 스레드에서 네트워크를 요청하면 블로킹이 발생하여, 네트워크에서 코루틴을 사용하고 결과만 UI 스레드에서 합쳐서 쓰는 것을 익혔다 3장에서는 두가지 유형의 비동기 작업을 살펴본다 Job Deferred 비동기 함수를 쉽게 나눠 볼 수 있는 두가지 결과가 없는 비동기 -> job 로그를 기록하고 전송하는 것을 백그라운드 작업으로 하는데, 이것이 완료되고 있는지 여부는 검사하지 않는다 결과를 반환하는 비동기 -> deferred 결과를 활용해야되는 경우 두가지 경우 다 예외가 발생하거나, 해당작업이 필요하지 않을때 취소를 할 수 있음 Job Fire And Forget : 예외가 발생하지 않는한 대기하지 않는다. fun main(args: Array = runBlocking { va..
-
[Study] 코틀린 동시성 프로그래밍 - 2장. 코루틴 인 액션LANGUAGE/KOTLIN 2022. 8. 12. 17:43
안드로이드의 UI 스레드 CallFromWrongThreadException 안드로이드는 뷰 계층을 생성하지 않은 스레드가 관련 뷰를 업데이트하려고 할때 를 발생 시킨다 UI 스레드만이 뷰 계층을 생성할 수 있는 스레드이며 뷰를 업데이트 할 수 있다. NetworkOnMainThreadException 자바에서의 네트워크 동작은 기본적으로 블로킹된다. UI 스레드에서 네트워크 작업을 수행할 때마다 안드로이드는 중단된다. 백그라운드에서 요청하고, UI 스레드에서 업데이트할 것 두 가지를 합쳐서 서비스 호출을 구현하려면 백그라운드 스레다가 웹 서비스를 호출하고, 응답이 처리된 후에 UI 스레드에서 업데이트 하도록 해야 한다. 스레드 생성 코틀린은 스레드 생성 과정을 단순화해서 쉽고 간단하게 스레드를 생성할 ..
-
[Study] 코틀린 동시성 프로그래밍 - 1장 Hello, Concurrent World!LANGUAGE/KOTLIN 2022. 8. 12. 17:40
프로세스, 스레드, 코루틴 애플리케이션을 시작할 때 운영체제는 프로세스를 생성하고 여기에 스레드를 연결한 다음, 메인 스레드(main thread)로 알려진 해당 스레드를 시작한다. 프로세스 프로세스는 실행 중인 애플리케이션의 인스턴스다. 애플리케이션은 여러 프로세스로 구성될 수 있다. 스레드 실행 스레드는 프로세스가 실행할 일련의 명령을 포함한다. 스레드가 끝나면 프로세스의 다른 스레드와 상관없이 프로세스가 종료된다. fun main(args: Array) { doWork() } 기본적인 애플리케이션이 실행되면 main() 함수의 명령 집합이 포함된 메인 스레드가 생성된다. doWork()은 메인 스레드에서 실행되므로 doWork()이 종료되면 애플리케이션의 실행이 종료된다. 스레드 안에서 명령은 한 ..