Android 성능 최적화-스레드 최적화

Android 스레드 스케줄링 메커니즘

스레드 스케줄링 메커니즘

  • 시분할 스케줄링 모델 : 모든 스레드는 CPU 사용 권한을 얻기 위해 번갈아 가며 각 스레드가 차지하는 CPU 시간은 균등하게 분배됩니다.
  • 선점 스케줄링 모델 : CPU를 점유하기 위해 실행 가능한 풀에서 우선 순위가 높은 스레드의 우선 순위를 지정하고 우선 순위가 같은 스레드를 무작위로 선택합니다.

Android 스레드 스케줄링 메커니즘
Android의 스레드 스케줄링 메커니즘은 선점 스케줄링 모델입니다.
스레드 우선 순위 (nice) : 기본적으로 새로 생성 된 스레드의 우선 순위는 기본적으로 상위 스레드와 동일합니다.
스레드 그룹화 : Android도 포 그라운드 스레드와 백그라운드 스레드로 나뉩니다.

Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)

Android 비동기 모드

  • 글타래 (쓰레드) : 직접 스레드 생성
  • AsyncTask : UI 스레드와 작업자 스레드 간의 빠른 전환을위한 간단하고 편리한 메커니즘을 제공합니다. 즉시 시작해야하는 사용 시나리오에 적합하지만 비동기 실행의 수명주기가 짧습니다 ().
  • HanderThread : 특정 콜백 메서드에 대한 전용 스레드를 설정하거나 특정 작업의 실행을 대기하고 스레드 작업 스케줄링을 제공합니다. (handerThread는 Thread + handler 메커니즘을 상속합니다.) 참조 문서 : HandlerThread 사용 방법 교육
  • ThreadPool : 작업을 다른 단위로 분해하고 동시 및 동시 처리를 위해 다른 스레드에 배포합니다.
  • IntentService : UI에 의해 트리거되는 Service 작업 실행에 적합하며, 백그라운드에서 작업이 실행될 때 특정 메커니즘을 통해 UI로 피드백 될 수 있습니다 (IntentService는 HandlerThread를 사용하는 Service에서 상 속됨)
  • 로더 : Android 시스템은 LoaderManager (내부에서 사용되는 AsyncTask)를 제공합니다.

Android 스레드 최적화

  • 스레드는 스레드 이름을 지정하여 쉬운 문제 해결을 위해 스레드를 그룹화합니다.
  • 스레드 우선 순위를 합리적으로 할당
  • 스레드 풀로 스레드 재사용
  • 올바른 시나리오에 적합한 비동기식 방법 선택
  • 전체 애플리케이션의 총 스레드 수를 제어하고 애플리케이션의 각 모듈에 대해 스레드를 재사용합니다.
  • 더 이상 사용되지 않는 HandlerThread를 종료해야합니다.
  • 스레드를 생성하는 데 직접 사용하지 마십시오. 스레드 풀을 사용해야합니다.

추천

출처blog.csdn.net/yanwenyuan0304/article/details/106813636