티스토리 뷰
먼저 프로세스와 쓰레드의 개념에 대해서 설명하겠습니다.
프로세스란?
강으로 비유하자면 하나의 큰 흐름이자 명칭입니다.
한강에는 수많은 지류들이 있습니다.
그러나 우리는 이 모든걸 통틀어서 한강이라고 합니다.
물론 지류가 없이 큰 줄기하나의 강이 존재할 수 도 있습니다.
이런한 형태들의 프로그램 흐름을 프로세스라 합니다.
시스템적으로 설명하자면 디스크에 저장되어있는 '프로그램'이
메인메모리에 공간을 할당받고 CPU에 의해 실행된 상태를 프로세스라고 합니다.
요약하자면 프로세스는 프로그램의 커다란 흐름입니다.
(하나의 프로그램이 여러 프로세스로 이루어질 수 있지만 이는 혼란을 초래하므로 넘어가겠습니다.)
쓰레드란?
쓰레드란 위에서 말한 여러가지 흐름입니다.
그것이 하나가 될 수도있고 여러가지가 될 수도 있습니다.
강의 물길도 하나가 있을 수 있고 여러가지가 있을 수 있습니다.
한강에는 북한강,남한강 그리고 그 외의 여러 작은 지류들이 있습니다.
이러한 흐름들의 명칭을 쓰레드라고 합니다.
프로그램적인 설명을 덧 붙이자면
프로세스 내에서 실행되는 흐름의 단위
프로세스와 쓰레드의 차이점과 특징은 위에 서술한 것들이 전부는 아닙니다.
더 자세한 정보는 위키를 찾아보시기 바랍니다.
그렇다면 안드로이드에서의 쓰레드는 어떤식일까요?
안드로이드에서는 앱이 실행될 때 기본적으로 하나의 프로세스가 생성됩니다.
그리고 그에 따라 하나의 Main Thread가 생성 됩니다.
이 때 Main Thread는 UI Thread의 역할도 합니다.
무슨 말이냐면 UI의 글자나 형태등의 변경에 관한 UI작업은
Main Thread에서만 해야합니다.
그리고 Main Thread의 작업시간이 길어지면 OS에서 앱이 종료되었다고 판단하여
사용자에게 앱을 종료할 것인지 물어보는 대화상자를 띄워줍니다.
그래서 작업시간이 오래걸리거나 Network작업들은 Sub Thread를 생성하여 작업해줍니다.
기본적인 Thread 생성 방법들
1. Thread Class로 상속하기
2. Runnable Interface로 구현하기
Handler 사용하기
UI변경을 Main Thread에서만 가능하다고 했었습니다.
subThread에서 UI를 변경해야 할 필요가 있을 때,
Main Thread의 핸들러를 이용하여 UI를 업데이트하여줍니다.
핸들러는 Message Queue에 Message를 넣기 위한 클래스입니다.
핸들러는 subThread 들로부터 받은 메세지들을
Main Thread의 Looper(Message Queue)에 넣습니다.
그리고 Maint Thread는 Looper로부터 데이터를 읽어와 UI에 적용시킵니다.
핸들러는 스레드 간에 메세지 객체나 Runnable 객체를 통해 통신할 수 있습니다.
1. 핸들러 생성 방법
2. 핸들러 응용(3초후 액티비티 전환)
안드로이드 레퍼런스입니다.
핸들러의 각종 함수들이 있습니다. 읽어보시기 바랍니다.
레퍼런스 읽는 습관을 들이시고 영어문서 읽는 것이 익숙해져야 합니다.
저도 아직도 힘들지만
그것이 컴공의 숙명인 것 같습니다.ㅜㅜ
쓰레드 포스팅 1은 여기서 마치고 2에서 AsyncTask를 포스팅하겠습니다.
'Development > Android' 카테고리의 다른 글
24. Multi Thread -2 (0) | 2018.05.05 |
---|---|
22. Canvas & Paint (0) | 2018.05.05 |
21. 파일 입출력 (0) | 2018.05.05 |
20. 웹뷰(WebView) (0) | 2018.05.05 |
19. Parcelable (0) | 2018.05.05 |
- Total
- Today
- Yesterday
- MySQL
- Gradient descent algorithm
- gitgnore
- ausg
- Android Studio
- git
- OS
- Algorithm
- sequelize
- MDP
- Reinforcement Learning
- #handsonlab
- Linux
- commands
- branch
- 통계적 가설 검정
- Android
- Confustion Matrix
- Memory segmetation
- p-value
- 강화학습
- Markov Decision Process
- #ausg
- System
- rl
- Reinforcement Learniing
- #AWS
- Preprocessing
- #ab
- AWS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |