본문 바로가기

내일배움캠프

본 캠프 15일차 -쓰레드

쓰레드

  • 쓰레드는 실행흐름을 말하는데 프로그램에는 하나의 메인쓰레드가 있다.
  • 지금까지 써왔던 fun main() {} 의 메인함수를 하나의 메인쓰레드라고 말한다.
  • 지금까지 한것들은 메인 쓰레드 위에서 로직을 실행해 동시처리가 불가능 했는데 별도의 자식쓰레드를 생성하면 동시에 실행할 수 있다.
  • 프로그램이 메모리에 올라가서 실행될때 이를 프로세스 1개로 칭하는데 쓰레드는 이보다 더 작은 단위이다.
  • 쓰레드는 생성되서 수행할 때 각 독립된 메모리 영역인 STACK을 가진다.

위 사진이 메모리에 들어간 프로세스와 쓰레드, 스택의 공간을 나타낸 사진이다.

예를 들어 게임에서 공격을 했는데 공격하고 난뒤 일정시간 뒤 체력이 줄고, 일정시간뒤 때리는 효과음이 발생한다면 이상하니 이것이 한꺼번에 실행되야 편안하다. 

이를 위해 외부종속성을 추가하여야 하는데 

Kotlin/kotlinx.coroutines: Library support for Kotlin coroutines (github.com)

위에 나온 Gradle을 복사하여 안드로이드 스튜디오의 Gradle Scripts에서 build.gradle(Module:app)에 붙여 넣어준다.

이러면 코루틴을 사용할수 있게 된다.

 

  • 실습을 해 보자.

복사한 Gradle을 여기에 붙여주고 sync now를 눌러 적용을 시켜준다.

이렇게 빨간색으로 뜬 곳을 좌클릭으로 눌러보면 임포트 해줄 수 있는 버튼이 나오는데 이중에서 골라주면 위에 3번째 줄에 뜬 것처럼 import로 코루틴이 나온다.

동시에 실행하지만 먼저 cpu 자원을 할당받는게 랜덤이라 쓰레드 1과 2가 랜덤으로 나오는게 보인다.

 

드디어 사전캠프때 왜 쓰는지 모르지만 일단 쓰기만 했던 import부분이 어떻게 나오는지 알 수 있었다.

근데 강의를 보는거로는 알겠는데 실제로 하니 멍해지기만 한다. 일단 주말동안 다시 한번 강의랑 코드들을 돌려보고 다음주에 반이 나뉘기 전에 튜터님하고 면담이 있다는데 그때 무엇을 모르는지 이것도 얘기 해달라는데 좀 더 정리해서 내가 정확히 어떠한 것들이 먼저 더 필요한지 알아보고 담주 월요일에 들어가야겠다.

'내일배움캠프' 카테고리의 다른 글

본 캠프 17일차 - 지난 과제  (0) 2023.12.12
본 캠프 16일차 - 컬렉션(List, Map, Set)  (1) 2023.12.11
본 캠프 14일차  (1) 2023.12.07
본 캠프 13일차  (1) 2023.12.06
본 캠프 12일차  (2) 2023.12.05