Notice
Recent Posts
Recent Comments
Link
투케이2K
63. (TWOK/ALGORITHM) [Kotlin] 문법 - async , await 사용해 작업 병렬 처리 (Task Parallel Processing) 실시 본문
투케이2K 알고리즘
63. (TWOK/ALGORITHM) [Kotlin] 문법 - async , await 사용해 작업 병렬 처리 (Task Parallel Processing) 실시
투케이2K 2022. 10. 11. 14:09[환경 설정 및 설명]
언 어 : Kotlin
설 명 : 문법 - async , await 사용해 작업 병렬 처리 (Task Parallel Processing) 실시
[소스 코드]
// =================================== [변수 선언 실시] ======================================
var coroutineJob: Job? = null
// =================================== [코루틴 정의 실시] =====================================
try{
/**
* ------------------------------------
* TODO [요약 설명]
* ------------------------------------
* 1. 코루틴은 동시성 프로그래밍으로 비동기적으로 실행되는 코드입니다
* ------------------------------------
* 2. 코루틴은 백그라운드 스레드 (네트워크 통신) 에서 코드를 처리할 때 자주 사용됩니다
* ------------------------------------
* 3. 코틀린 스코프는 새로운 코루틴을 생성함과 동시에 실행되어야 할 Job 을 그룹핑 합니다
* ------------------------------------
* 4. Default : 코루틴에서 연산 작업을 수행할 때 사용됩니다
* ------------------------------------
* 5. async await : 비동기 로직 처리를 수행할 수 있으며 결과를 확인할 수 있습니다
* ------------------------------------
* 6. 필요 import :
*
* import kotlinx.coroutines.CoroutineScope
* import kotlinx.coroutines.Dispatchers.Default
* import kotlinx.coroutines.launch
* ------------------------------------
* 7. 코루틴 개념 참고 사이트 : https://kkh0977.tistory.com/2761
* ------------------------------------
* 8. 코틀린 의존성 부여 참고 사이트 : https://kkh0977.tistory.com/2763
* ------------------------------------
* */
// ------------------------------------
// [로직 처리 실시]
coroutineJob = CoroutineScope(Default).launch {
// [변수 선언]
var sum_1 = 0
var sum_2 = 0
// [async 비동기 작업]
val async_1 = async {
Log.i("---","---")
Log.w("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > onCreate() 메소드 : async_1 작업 시작]")
Log.w("//===========//","================================================")
Log.i("---","---")
for (i in 1..5){ // [15 합계]
// [합계 더하기]
sum_1 = sum_1 + i
// [딜레이 설정]
delay(1000)
}
// [결과 반환]
sum_1
}
// [async 비동기 작업]
val async_2 = async {
Log.i("---","---")
Log.w("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > onCreate() 메소드 : async_2 작업 시작]")
Log.w("//===========//","================================================")
Log.i("---","---")
for (i in 6..10){ // [40 합계]
// [합계 더하기]
sum_2 = sum_2 + i
// [딜레이 설정]
delay(1000)
}
// [결과 반환]
sum_2
}
// [await 비동기 작업 결과 확인]
val sum_total = async_1.await() + async_2.await()
// [로그 결과 확인]
Log.i("---","---")
Log.w("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > onCreate() 메소드 : CoroutineScope 코루틴 로직 처리 결과 확인]")
Log.i("","\n"+"[sum_1 : "+ sum_1 +"]")
Log.i("","\n"+"[sum_2 : "+ sum_2 +"]")
Log.i("","\n"+"[sum_total : "+ sum_total +"]")
Log.w("//===========//","================================================")
Log.i("---","---")
}
// ------------------------------------
}
catch(e : Exception){
Log.i("---","---")
Log.e("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > onCreate() 메소드 : 에러 상황 발생]")
Log.i("","\n"+"[error : "+ e.message +"]")
Log.e("//===========//","================================================")
Log.i("---","---")
}
[참고 사이트]
반응형
'투케이2K 알고리즘' 카테고리의 다른 글
Comments