handlerthread原理_ai应用场景和介绍用法[通俗易懂]

handlerthread原理_ai应用场景和介绍用法[通俗易懂]相信很多同学都听说并使用过HandlerThread、Thread、Handler,但具体对这三种的用法和区别你真有认真总结过吗?本文帮你区别并了解三者的基本用法

handlerthread原理_ai应用场景和介绍用法[通俗易懂]"

相信很多同学都听说并使用过HandlerThread、Thread、Handler,但具体对这三种的用法和区别你真有认真总结过吗?

本文帮你区别并了解三者的基本用法。

Thread基本用法

Thread类实现了Runnable接口,必须重写run()方法;

//匿名内部类形式
new Thread(new Runnable() { 
   
        
        @Override
        public void run() { 
   
            // TODO Auto-generated method stub
        }
});

或者

class myThread implements Runnable { 
   

    @Override
    public void run() { 
   
        // TODO Auto-generated method stub
    }
}

启动一个线程,用start()方法;

HandlerThread基本用法

看源码开头的方法注释,我们可以很清楚的了解这个类的用途:

/* Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called. */

翻译过来就是:
使用HandlerThread可以方便的开启一个线程,并且这个线程已经绑定了一个looper了。这个looper可以用来new一个handler类。注意在此之前,要调用start()方法。

示例代码如下:

HandlerThread thread1 = new HandlerThread("test1");
thread1.start();

看到这里很多同学可能会产生一个疑问,为什么这个线程已经绑定了一个Looper了呢?还要在此之前调用start()方法?

答案就是:提前调用start()方法就是为了为线程绑定Looper的。
我们知道,start()方法可以开启一个线程,调用线程的run()方法。而HandlerThread的run()方法是这样的:

@Override
public void run() { 
   
    mTid = Process.myTid();
    Looper.prepare();// HandlerThread在start()的时候执行run()方法,而Looper就是在这里被创建的
    synchronized (this) { 
   
        mLooper = Looper.myLooper();
        notifyAll();
    }
    Process.setThreadPriority(mPriority);
    onLooperPrepared();
    Looper.

今天的文章handlerthread原理_ai应用场景和介绍用法[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/76455.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注