Kotklin 문법: Thread

SHY(code poet)·2024년 3월 13일

✨Kotlin에 관하여✨ 

목록 보기
31/36

쓰레드로직을 동시에 실행할 수 있게텍스트 돕는다.

  • 프로그램은 하나의 메인 쓰레드(실행흐름)가 존재한다.
  • 하나의 메인 쓰레드는 → fun main() ← 메인함수를 의미한다.
  • 실습 프로그램은 메인 쓰레드위에서 로직을 실행해서 동시처리가 불가능했다.
  • 별도의 자식 쓰레드를 생성해서 동시에 로직을 실행할 수 있다.
  • 코틀린은 thread 키워드로 쓰레드를 생성할 수 있다.
  • 경쟁: “동시에 처리된다는 것은 하나의 cpu 차원을 경쟁한다는 것” 즉, 이 cpu를 누가 더 먼저 차지하고 할당되느냐에 따라서, 실행이 먼저됨 -> 랜덤성이 부여된다.
  • @Volatile 키워드
    : @Volatile을 붙이면 변수의 값이 메인 메모리에만 저장되며, 멀티 쓰레드 환경에서 메인 메모리의 값을 참조하므로 변수값 불일치 문제를 해결할 수 있게된다. 다만 CPU캐시를 참조하는 것보다 메인메모리를 참조하는 것이 더 느리므로, 성능은 떨어질 수 밖에 없다.
  • 사용예시
  • 몬스터를 공격하고, 체력이 줄어들고, 효과음이 동시에 발생해야한다.
  • 경마 프로그램의 말들은 동시에 출발해서 경쟁해야 한다.
  • 1부터 10까지 출력하는 코드를 2개의 쓰레드로 경쟁
    • 1초마다 자원경쟁을 시키기위해 딜레이를 추가

    • Thread1과 Thread2의 순서는 보장되지 않고 경쟁

      ※프로세스와 쓰레드

  • 프로세스(Process)
    • 프로그램이 메모리에 올라가서 실행될때 이를 프로세스 1개 라고 한다.
    • 보통 프로그램을 더블클릭하면 프로세스가 생긴다.
  • 쓰레드(Thread)
    • 메모리 자료
    • 쓰레드는 프로세스보다 더 작은 단위
    • 프로세스 안에서 더 작은 작업의 단위를 쓰레드라고 부른다.(최소 한개의 메인쓰레드가 존재한다.)
    • 쓰레드는 생성되서 수행할때 각 독립된 메모리 영역인 STACK 을 가진다.
    • 즉 쓰레드를 한 개 생성하면 스택메모리의 일정 영역을 차지한다.
profile
진정한 개발자는 코드를 두려워하지 않는다. 오히려 코드가 그를 두려워한다.

0개의 댓글