소개
게시글
질문&답변
2024.01.07
suspend function의 일시 중단 여부는 어떻게 결정되나요?
저도 Coroutine을 배우는 입장에서 이 부분이 조금 헷갈렸어서 추가적으로 글 작성해보겠습니다! Kotlin docs의 coroutines 기본을 보다보면 launch에 대한 설명이 나옵니다.https://kotlinlang.org/docs/coroutines-basics.html#your-first-coroutine즉, launch는 새로운 Coroutine 만들어냅니다.Coroutine을 대게 경량 쓰레드라고도 표현하니까 쓰레드로 예시를 들면 쓰레드 t1, t2가 경합하면 어떤것이 먼저 실행될까요? 아마 태현님이 말씀하신것처럼 OS나 내부 구현에 따라 달라질 것 같습니다. 저는 Spring 환경에서 테스트를 해보고있어서 다음과 같은 형식으로 코드를 작성했는데 임의로 delay() 메서드나 yield()로 요리조리 해보면 다양한 결과를 만날 수 있어서 이해가 조금 편했던것 같습니다.@Component class CoroutinesLecture1: ApplicationRunner { override fun run(args: ApplicationArguments?) { runBlocking { println("START") launch { newRoutine() } yield() println("END") } } suspend fun newRoutine(){ val num1 = 1 val num2 = 2 println("${num1 + num2}") } }yield로 위임했기 때문에 START -> 3 -> END 결과 @Component class CoroutinesLecture1: ApplicationRunner { override fun run(args: ApplicationArguments?) { runBlocking { println("START") launch { newRoutine() } yield() println("END") } } suspend fun newRoutine(){ val num1 = 1 val num2 = 2 delay(50) println("${num1 + num2}") } }yield로 위임했지만 delay 메서드를 만났기 때문에 일시중단되어 START -> END -> 3 결과 글을 작성하다보니 저도 한가지 궁금한점이 생겼서 질문드립니다!현재는 코루틴이 2개여서 중단과 재개가 눈에 잘 보이는 편이지만 만약 현업에서 코루틴이 N개 이상인 경우에서는 이런 과정들이 파악하기 힘들 것 같은데 코루틴끼리는 항상 동시에 실행될 것이라고 가정하고 코드를 작성하도록 컨벤션등이 있는지 궁금합니다! 틀린정보이거나 헷갈리는 부분있으시면 말씀해주세요!늘 질좋은 강의 제공해주셔서 감사합니다ㅎㅎ
- 0
- 2
- 373
질문&답변
2022.08.15
@RequestMapping 활용
역시나 친절한 답변 감사드립니다. 편리하게 사용하기 위해 중복을 제거하는것이 오히려 단점이 될 수 있는 상황도 존재하는군요 또한 version control diff를 많이 고려하신다는게 느껴지시네요 ㅎㅎ 그 이유가 혹시 코드리뷰등을 수행할때 변경지점을 한눈에 알아보기 쉽게 하려는 의도신가요?
- 1
- 2
- 475
질문&답변
2022.08.11
build.gradle과 패키징 관련 문의
친절한 답변덕분에 이해가 잘 되었습니다 너무 감사드립니다ㅎㅎ
- 2
- 2
- 269
질문&답변
2022.08.11
constructor 필드 문의
9강에서 설명해주시는 내용이였는데 한번 더 설명해주셔서 감사합니다!!
- 0
- 2
- 375
질문&답변
2022.03.09
AppConfig와 생성자 관련 질문드립니다
아하 그렇네요 AppConfig내에서 생성자가 사용되어 의존성이 주입되네요 감사합니다!!!!
- 1
- 2
- 186