您的位置:首页 > 移动开发 > Android开发

【Android开发】线程与消息处理-实现多线程

2015-06-02 23:16 447 查看
在现实生活中,很多事情是同时进行的,例如,我们可以一边看书,一边喝咖啡;而计算机则可以一边放音乐,一边打印文档。对于这种可以同时进行的任务,可以用线程来表示,每个线程完成一个任务,并与其它线程同时执行,这种机制被称为多线程。下面介绍如何创建、开启、休眠和停止线程。

1.创建线程

两种方法

a.通过Thread类的构造方法创建线程

在Android中,可以使用Thread类提供的以下构造方法来创建线程

Thread(Runnable runnable)


该构造方法的参数Runnable可以通过创建一个Runnable类的对象并重写其run()方法来实现,例如,要创建一个名为thread的线程,可以使用下面的代码:
Thread thread=new Thread(new Runnable(){
//重写run方法
@Override
public void run(){
//要执行的操作
}
});


b.通过实现Runnable接口创建线程

在Android中,还可以通过实现Runnable接口来创建线程。实现Runnable接口的语法格式如下:

public class ClassName Object implements Runnable

当一个类实现Runnable接口之后,还需要实现其run()方法,在run()方法中,可以编写要执行的操作的代码。

例如,要创建一个实现了Runnable接口的Activity,可以使用下面的代码:
public class MainActivity extends Activity implements Runnable{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
public void run() {
// 要执行的操作

}

}


2.开启线程

创建线程对象后,还需要开启线程,线程才能执行。Thread类提供了start()方法用于开启线程,其语法格式入下:

start()

例如,存在一个名为thread的线程,如果向开启该线程,可以使用下面的代码:
thread.start();


3.线程的休眠

线程的休眠就是让线程暂停一段时间后再次执行。同Java一样,在Android中,也可以使用Thread类的sleep()方法让线程休眠指定的时间。sleep()方法的语法格式如下:

sleep(long time)

其中参数time指定休眠的时间,单位为毫秒

例如,想要线程休眠1秒钟,可以使用下面的代码:
Thread.sleep(1000);


4.中断线程

当需要中断指定的线程时,可以使用Thread类提供的interrupt()方法来实现。使用interrupt()方法可以向指定的线程发送一个中断请求,并将该线程标记为中断状态。interrupt()方法的语法格式如下:

interrupt()

例如,存在一个名称为thread的线程,如果想中断该线程,可以使用下面的代码;
...//省略部分代码
thread.interrupt();
...//省略部分代码
public void run(){
while(Thread.currentThread().isInterrupted()){
...//省略部分代码
}
}

另外,由于线程执行wait()、join()或sleep()方法时,线程的中断状态将被清除并抛出InterruptedException,所以,如果想在线程中执行了wait()、join()或sleep()方法时中断线程,就需要使用一个boolean型的标记变量来记录线程的中断状态,并通过该标记变量来控制循环的执行与停止。例如,通过名为isInterrupt的boolean型变量来标记线程的中断,关键代码如下:

private boolean isInterrupt=false;//定义标记变量
...//省略部分代码
...//需要中断线程时,将isInterrupt的值设置为true
public void run(){
while(!isInterrupt){
...//省略部分代码
}
}


转载请注明出处:http://blog.csdn.net/acmman/article/details/46336965
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: