首页 > 移动平台 > 详细

Android 多线程基础

时间:2014-03-13 11:04:51      阅读:614      评论:0      收藏:0      [点我收藏+]

需要注意几个概念: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线程上的操作。

bubuko.com,布布扣
handler.post(new Runnable() {...
bubuko.com,布布扣

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

 

参考文章:

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

Android 多线程基础,布布扣,bubuko.com

Android 多线程基础

原文:http://www.cnblogs.com/davesuen/p/3597738.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!