안드로이드 handlerThread가 어렵네요
공부하다보니 메인쓰레드, 백그라운드 쓰레드, 메시지, 메시지 큐 등등 이 나오는데
너무 난잡하다고 해야할까요? 서로 연관성이 깊은? 그런것같은데
쉽게 설명해주실 수 있을까요?
55글자 더 채워주세요.
1개의 답변이 있어요!
cpu 는 한 번에 하나의 작업만 가능합니다. 그런데 여러개의 작업이 함께 진행되는 것이 필요해서 쓰레드가 생겨났습니다.
쓰레드는 함께 수행될 수 있는 작업을 말합니다.
근데, 안드로이드 처럼 UI를 가진 곳에서는 화면을 여러놈이 서로 그리려고 하면 안되기 때문에 특정 쓰레드 한테만 그 권한을 줍니다. 그게 메인 쓰레드 입니다. 화면을 그리거나 갱신하기 위해서는 메인쓰레드에서만 하거나 메인쓰레드한테 요청해야 합니다.
그 외의 쓰레드는 그냥 쓰레드 입니다. 용도별로 만들어서 이름을 붙이곤 합니다. 종료되지 않고 무한히 반복되면서 밑에서 뭔가를 계속 하는 놈을 백그라운드 쓰레드라고 이름 지었습니다.
쓰레드는 개발자가 얼마든지 만들 수 있기 때문에 어느시점이 되면 쓰레드가 너무 많아서 속도가 저하됩니다.
그래서 조금만 만들어서 재사용할 수 있도록 쓰레드큐를 만들었습니다.
쓰레드큐에 작업을 등록해 놓으면 쉬고있는 쓰레드가 하나씩 가져다가 순서대로 처리해 줍니다.
이 쓰레드 큐 중에서 이벤트 용도로 사용하는 놈이 이벤트 큐 입니다.
이벤트 큐에 처리할 작업을 하나씩 추가해 놓으면 순서대로 처리됩니다. 이 처리할 작업을 메시지 라고 합니다.
그래서 메시지를 만들어서 요청하면 메시지큐가 하나씩 처리합니다. 그 결과는 이벤트로 전달됩니다. 그래서 이벤트 큐라고 합니다.