마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[안드로이드] 쓰레드 사용은 언제하나요

0 추천
최근 안드로이드 공부하면서

AsyncTask 를 자주 사용하는데

막 사용하다보니까

A쓰레드 에서 설정한 변수 num를 B쓰레드에서 쓸려는데

쓰레드 작업이 비동기적이라서 그런지

B쓰레드에서 num 값을 사용하려면 그게 A에서 설정됬을때가 있고 안됬을때가 있더라고요

이게 A쓰레드에서 num값을 설정을 했는지 알 수 가없으니... 이렇게 꼬이는 경우가 생기더라구요

보통 쓰레드는 뭐할때 쓰는건가요?

쓰레드 작업으로 동시 처리하면 좀 더 빨라진다지만(?) 그러면 작업 나누고 나눠서 쓰레드돌리는게 좋은건지..

쓰레드 사용하는 경우가 궁금합니다.
g22206 (660 포인트) 님이 2018년 7월 20일 질문
g22206님이 2018년 7월 20일 수정

2개의 답변

0 추천
 
채택된 답변
동시성이 필요한 작업이거나, UI 에 Lock 이 예상되는 작업일 경우 Thead 를 이용 합니다.

안드로이드에서는 대표적으로 Network 작업 시 Thread 를 사용하도록 강제하고 있습니다.

가령 안드로이드 초기 버전의 경우 UI 버튼을 선택 하고 스레드 없이 네트워크를 작업했을 경우 버튼이 Lock 되는 현상이 보이기도 했습니다.

데이터를 전달 받기 전에 화면이 멈추는 듯한 모습이 보이는 것이죠,
aucd29 (218,390 포인트) 님이 2018년 7월 23일 답변
g22206님이 2018년 7월 24일 채택됨
0 추천

두개의 쓰레드에서 데이터를 공유 하려면 동기화가 필요한데 synchronized나 AtomicInteger(AtomicBoolean...) 같은 것을 사용해서 동기화 해야합니다. 만약 한 쪽에서 설정하고 다른 한 쪽에서 읽는 경우라면 HandlerThread와 Handler를 사용하는 것도 한가지 방법일것 같습니다.

luxsoft (1,780 포인트) 님이 2018년 7월 23일 답변
...