Android 多线程基础

需要注意几个概念:Runnable,Thread,Handler。

 

1. Runnable只是一个接口,里面包含run()函数。所以Runnable本身不会开启线程。

 

2. Thread实现Runnable接口,并创建新的线程。

创新线程有两种方式:

  • 创建一个类,继承Thread,重写run()函数。用start()方法运行。

      Xxx extends Thread...

  • 创建一个类,继承Runnable,重写run(),把这个类放在一个Thread里,然后调用Thread的start()方法运行。

      Xxx implements Runnable...

      Xxx x  = new Xxx();

      new Thread(x).start();

第二种方法好处是:

  • Runnable是接口,可以多重继承,而如果继承Thread则只能继承一个。
  • 资源可以共享。比如经典的多线程卖票,创建三个继承自Thread的类卖票,结果是各卖各的票,最后卖出了三倍于最高票数的票。但如果三个Thread使用的是同一个继承自Runnable的类的实例,资源就可以实现共享,最终卖出的票数等于最高票数。

 

3. Handler:一个Handler允许发送和处理Message或者Runnable对象,并且会关联到主线程的MessageQueue中。

就是说Handler应该与一个线程相对应,可以发送消息,然后在主线程(UI线程)中处理消息。

简单来说,就是Handler基本就是用来给线程更新UI的。

Handler有一个post方法,它会传递一个Runnable对象到消息队列中,在这个Runnable对象中,重写run()方法。一般在这个run()方法中写入需要在UI线程上的操作。

handler.post(new Runnable() {...

需要注意的是,post里面的Runnable的run()方法是运行于UI线程上的。所以不可以用来访问网络等耗时操作,否则会报错。相反如果在子线程中进行更新UI操作也会报错。

 

参考文章:

Android开发:Handler Runnable和Thread之间的区别和联系 应用--------------------看完本篇,从此一览无余!

Android 多线程基础,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。