Thread,Handler,HandlerThread区别

来源:互联网 发布:java 泛型用的多不多 编辑:程序博客网 时间:2024/04/28 21:29

Thread,Handler,HandlerThread

Thread

在Java中常用的线程类,在Android中我们一般会创建子线程以完成耗时任务,以避免主线程阻塞(ANR)。

使用

只需要继承Thread类,然后重写run方法即可。

Handler

Handler体系中的核心类,用于实现处理Message的逻辑

HandlerThread

本质上是一个包含了Looper的的Thread

作用

当位于非UI线程我们需要使用Handler体系时,需要自己手动创建一个Looper,并且进行prepare和`start,如果我们使用HandlerThread,在这其中已经帮我们完成以上操作,应该说方便了一点。

特点

  • HandlerThread将loop转到子线程中处理,说白了就是将分担MainLooper的工作量,降低了主线程的压力,使主界面更流畅。

  • 开启一个线程起到多个线程的作用。处理任务是串行执行,按消息发送顺序进行处理。HandlerThread本质是一个线程,在线程内部,代码是串行处理的。

  • 但是由于每一个任务都将以队列的方式逐个被执行到,一旦队列中有某个任务执行时间过长,那么就会导致后续的任务都会被延迟处理。

  • HandlerThread拥有自己的消息队列,它不会干扰或阻塞UI线程。

  • 对于网络IO操作,HandlerThread并不适合,因为它只有一个线程,还得排队一个一个等着。

原创粉丝点击