相信很多同学都听说并使用过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