线程和线程池 -- HandlerThread

一、概念

HandlerThread继承了Thread,它是一种可以使用Handler的Thread,它在run方法中通过Looper.prepare()创建消息队列,并通过Looper.loop()来开启消息循环,这样在实际的使用中就允许在HandlerThread中创建Handler了。

二、使用

普通Thread主要用于在run方法中执行一个耗时任务,而HandlerThread在内部创建了消息队列,外界需要通过Handler的消息方式来通知HandlerThread执行一个具体的任务。

由于HandlerThread的run方法是一个无限循环,因此当明确不需要再使用HandlerThread时,可以通过它的quit或者quitSafely方法来终止线程的执行。

三、例子

HandlerThread mHandlerThread = new HandlerThread("handlerThreadTest");
Handler mHandler;
private void handlerThreadTest() {
    mHandlerThread.start();
    mHandler = new Handler(mHandlerThread.getLooper(), new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            Log.d(TAG, "zwm, handleMessage: " + msg.what);
            return false;
        }
    });
    mHandler.sendEmptyMessage(0);
}

你可能感兴趣的:(线程和线程池 -- HandlerThread)