728x90
반응형
Thread
Thread란?
- Thread란 프로세스 내에서 실행되는 독립적인 실행 흐름입니다. 하나의 프로세스에는 여러 개의 스레드가 있을 수 있으며, 각 스레드는 독립적으로 작업을 수행할 수 있습니다.
- Single-Thread란 무엇일까요?
- Single-Thread는 단일 스레드를 가리키며, 하나의 스레드만을 사용하여 작업을 처리하는 것을 의미합니다. 이 경우 작업은 순차적으로 실행되며, 다른 작업이 실행 중일 때에는 다른 작업을 처리할 수 없습니다. 단일 스레드 환경에서는 한 번에 하나의 작업만 처리할 수 있습니다.
- Multi-Thread란 무엇일까요?
- Multi-Thread는 다중 스레드를 가리키며, 여러 개의 스레드를 사용하여 작업을 처리하는 것을 의미합니다. 각각의 스레드는 병렬 또는 동시에 작업을 수행할 수 있습니다. 다중 스레드 환경에서는 여러 작업이 동시에 실행될 수 있어서 작업 처리 속도를 향상시킬 수 있습니다.
Thread를 사용하는 예시는 무엇이 있을까요?
- 다운로드 관리: 웹 브라우저에서 파일을 다운로드할 때, 다운로드를 담당하는 스레드를 별도로 생성하여 동시에 여러 개의 파일을 다운로드할 수 있습니다.
- 멀티미디어 처리: 동영상 플레이어에서 동영상 재생 스레드와 동시에 오디오 재생 스레드를 생성하여 동영상과 음악을 동시에 재생할 수 있습니다.
- 병렬 계산: 병렬 처리가 가능한 작업, 예를 들어 그래픽 렌더링이나 데이터베이스 처리 등은 여러 개의 스레드를 사용하여 작업을 분할하고 동시에 처리할 수 있습니다.
- UI 응답성 향상: 사용자 인터페이스(UI)를 담당하는 스레드와 백그라운드 작업을 처리하는 스레드를 분리하여 UI가 끊김 없이 반응하도록 할 수 있습니다.
동기와 비동기
- 동기란 무엇일까요?
- 동기(Synchronous)는 작업이 순서대로 진행되고, 이전 작업이 완료되어야 다음 작업이 실행되는 방식을 의미합니다. 즉, 한 작업이 끝날 때까지 다음 작업은 대기해야 합니다.
- 비동기란 무엇일까요?
- 비동기(Asynchronous)는 작업이 독립적으로 실행되며, 이전 작업의 완료 여부와 상관없이 다음 작업을 실행할 수 있는 방식을 의미합니다. 비동기 작업은 요청 후 결과를 기다리지 않고 다른 작업을 동시에 수행할 수 있습니다.
- 동기의 장점
- 간단하고 직관적인 코드 작성 가능
- 순차적인 실행으로 인해 결과 예측 및 디버깅이 비교적 용이
- 동기의 단점:
- 작업이 완료될 때까지 대기해야 하므로, 다른 작업을 동시에 처리하지 못하고 대기 시간이 발생할 수 있음
- 비동기의 장점:
- 다른 작업과 동시에 실행 가능하여 자원을 효율적으로 활용할 수 있음
- 오래 걸리는 작업을 기다리지 않고 다른 작업을 수행할 수 있으므로 전체 작업 시간을 단축시킬 수 있음
- 비동기의 단점:
- 코드가 복잡해지고 처리 순서를 추적하기 어려울 수 있음
- 동기에 비해 예외 처리가 더 어려울 수 있음
- 동기와 비동기를 사용하는 예시에는 무엇이 있을까요?
- 네트워크 통신:
- 동기: 네트워크 요청을 보내고 응답을 받을 때, 요청 후에 응답이 도착할 때까지 대기합니다.
- 비동기: 네트워크 요청을 보낸 후, 응답을 기다리지 않고 다른 작업을 수행합니다. 응답이 도착하면 해당 작업을 처리합니다.
- 이벤트 처리:
- 동기: 특정 이벤트(예: 버튼 클릭)가 발생하면 해당 이벤트를 처리하기 위해 대기합니다.
- 비동기: 이벤트가 발생하면 이벤트를 처리하는 작업을 등록하고, 다른 작업을 계속 수행할 수 있습니다. 이벤트가 발생하면 등록된 작업이 실행됩니다.
- 병렬 처리:
- 동기: 여러 작업을 순차적으로 실행하여 하나의 작업이 끝나면 다음 작업을 실행합니다.
- 비동기: 여러 작업을 동시에 실행하여 병렬로 처리할 수 있습니다. 작업이 완료되는 순서와 관계없이 결과를 수집하거나 다음 작업을 실행할 수 있습니다.
- 네트워크 통신:
Handler
- Android에서 Handler란 무엇일까요?
- Android에서 Handler는 안드로이드의 UI 스레드와 다른 백그라운드 스레드 간의 통신을 가능하게 해주는 기능입니다. Handler는 메시지를 전달하고 스레드 간의 작업을 스케줄링하는 데 사용됩니다.
- Handler를 사용하는 이유는 무엇일까요?
- UI 업데이트: 안드로이드에서 UI 업데이트는 메인(UI) 스레드에서만 수행해야 합니다. Handler를 사용하면 백그라운드 스레드에서 작업을 수행한 후 결과를 메인 스레드로 전달하여 UI를 업데이트할 수 있습니다.
- 비동기 작업: Handler를 사용하면 비동기 작업을 쉽게 처리할 수 있습니다. 백그라운드 스레드에서 작업을 수행한 후 결과를 Handler를 통해 메인 스레드로 전달하고 처리할 수 있습니다.
- 작업 스케줄링: Handler는 메시지 큐를 관리하며, 작업을 지연하거나 예약할 수 있습니다. 따라서 작업을 특정 시간에 실행하거나 순서를 제어할 수 있습니다.
- Handler의 Message란 무엇일까요?
- Handler의 Message는 Handler가 처리해야 하는 작업에 대한 정보를 담고 있는 객체입니다. Message 객체에는 작업에 필요한 데이터와 실행할 코드(런어블, Runnable)가 포함될 수 있습니다. 이 메시지를 Handler에게 보내면 Handler는 해당 메시지를 수신하고 처리합니다.
- Handler를 사용하는 예시에는 무엇이 있을까요?
- UI 업데이트: 백그라운드 스레드에서 비동기 작업을 수행한 후, Handler를 사용하여 UI 스레드로 결과를 전달하고 UI 업데이트를 수행합니다.
- 타이머 및 스케줄링 작업: Handler를 사용하여 특정 시간 후에 작업을 예약하거나 주기적으로 작업을 실행할 수 있습니다.
- 이벤트 처리: 사용자의 입력 또는 다른 이벤트에 대한 처리를 Handler를 통해 메인 스레드에서 수행할 수 있습니다.
- 쓰레드 간 통신: 백그라운드 스레드에서 작업을 수행한 후, 결과를 Handler를 통해 다른 스레드로 전달하고 처리합니다.
- Looper
- Android에서 Looper란 무엇일까요?
- 스레드의 메시지 루프를 처리하는 역할을 합니다. Looper는 MessageQueue(메시지 큐)와 함께 동작하여 메시지를 처리하고 스레드를 계속해서 실행할 수 있도록 합니다.
- Looper를 활용하는 예시는 무엇이 있을까요?
- Handler와 함께 메시지 처리: Looper를 사용하여 메시지 큐를 생성하고, Handler를 통해 메시지를 큐에 전달하면 Looper가 메시지를 꺼내어 해당 메시지를 처리합니다. 이를 통해 스레드 간의 메시지 통신과 작업 처리를 가능하게 합니다.
- UI 업데이트: 안드로이드에서 UI 업데이트는 메인(UI) 스레드에서만 수행해야 합니다. Looper와 함께 사용되는 메인 스레드의 Looper는 메시지 큐에서 UI 업데이트 작업을 처리하고, UI를 갱신할 수 있도록 합니다.
- 타이머 및 스케줄링 작업: Looper와 함께 Handler를 사용하여 특정 시간 후에 작업을 예약하거나 주기적으로 작업을 실행할 수 있습니다. Looper는 메시지 큐를 계속 모니터링하며 작업을 실행합니다.
- 백그라운드 스레드의 메시지 처리: Looper를 사용하여 백그라운드 스레드에 메시지 큐를 생성하고, 메시지를 전달하여 백그라운드에서 비동기 작업을 처리하도록 할 수 있습니다. 이를 통해 UI 스레드와의 효율적인 통신과 백그라운드 작업 처리가 가능합니다.
728x90
반응형
'💻 Tech Log > Android | Kotlin' 카테고리의 다른 글
| UMC 8주차 스터디(데이터 베이스 ) (0) | 2023.07.04 |
|---|---|
| UMC 7주차 실습(Thread를 활용하여 타이머 만들어보기) (0) | 2023.07.04 |
| 프로젝트Umc 6주차 실습2( TabLayout과 ViewPager2) (0) | 2023.07.04 |
| Umc 6주차 실습1(BottomNavigationView) (0) | 2023.07.04 |
| umc 6주차 스터디 (고급레이아웃과 View) (0) | 2023.06.26 |