코루틴은 suspend fun (일시 정지 가능한 함수) 를 교체하는 게 핵심임 ㅇㅅㅇ ㅋㅋㅋㅋ


delay(1) 같은건 일시정지이기 때문에 교체가 일어남


근데 내가 Dispatcher 로 싱글스레드를 했기 때문에 job이 아래에 있는 i를 100번 더하는 함수로 교체가 일어남


근데 이 함수는 중간에 일시정지를 안하기 때문에 100까지 끝마치고 완료를 하는거지 ㅇㅅㅇ ㅋㅋㅋ


그래서 실제론 delay를 1밀리세컨드만 줬지만 결과는 저 i를 100번 더할때까지 전부 기다리게 됨.


실제로 코드 찍어보면




100번 프린트한 후 코루틴이 재개가 되는것을 알수있지 ㅇㅅㅇ ㅋㅋㅋㅋ


근데 안드로이드에서는 Dispatcher를 다 구현해줬는데


Main 은 쓰레드 1개(UI 쓰레드)

Default 는 CPU 의 쓰레드 개수만큼, 

IO 쓰레드는 최대 64개 까지 돌릴 수 있음 (부족하면 Default 디스패처도 공유하긴 하는데 최대론 64개까지 돌릴 수 있음)


위 코드에서 다 똑같이하고 singleThreadDIspatcher 가 아니라 쓰레드 여러개인 Dispatcher 로 바꾸면 




중간에서 시작하고




중간에서 완료할 수 있게되는거임 ㅇㅅㅇ ㅋㅋㅋㅋ