JAVA手册——线程简介之Runnable与Thread

来源:互联网 发布:java语言的四个特点 编辑:程序博客网 时间:2024/06/16 21:43

由于java是纯面向对象的语言,因此,java的线程模型也是面向对象的。

java通过Thread类将线程所必需的功能封装了起来。要想建立一个线程,必须要有一个线程执行函数,这个线程执行函数对应Thread类中的run方法

Thread类中还有一个start方法,这个方法负责建立线程,相当于调用Windows的建立线程函数CreateThread。

当调用start方法后,如果线程建立成功,并自动调用Thread类的run方法。因此,任何继承Thread类的java类都可以通过Thread类的start方法来建立线程。如果想要运行自己的线程执行函数,那就要覆盖Thread类的run方法


在java的线程模型中除了Thread类,还有一个标识某个java类是否可作为线程类的接口Runnable,这个接口只有一个抽象方法run(java的线程执行函数)。

因此,一个线程类的唯一标准就是这个类是否实现了Runnable接口的run方法,也就是说,拥有线程执行函数的类就是线程类。

从上面可以看出,在java中建立线程有两种方法:①继承Thread类;②实现Runnable接口,并通过Thread和实现Runnable的类来建立线程。

eg.

class MyThread extends Thread{

public void  run(){……}

}

public class TestThread{

public static void main(){

Thread t1=new MyThread();

t1.start();

}

}

class MyThread implements Runnable{

public void run(){……}

}

public class TestThread{

public static void main(){

Runnable myThread=new MyThread();

Thread t2=new Thread(myThread);

t2.start();

}

}


本质上,其实是一种方法,即通过Thread类来建立线程,并运行run方法。

大区别是:通过继承Thread类来建立线程,虽然实现起来更容易,但是由于java不能多继承,所以这个线程类如果继承了Thread则不能再继承其他类,所以java线程模型提供了Runnable接口。

0 0