定义线程有两种方法,一种是继承Thread类,一种是实现Runnable接口,这两种方法存在各自的优缺点。和定义线程对应的就是创建线程对象,也有两种方法。下面给大家介绍一下这两种方法来定义线程及相对应的创建线程对象的方法。

1.继承Thread类定义线程

      定义一个线程可以通过继承Thread类来实现,这是一种相对简单的定义线程的方法。在Thread类中有一个run方法,在定义的线程中需要重写这个方法。在重写run方法中可以定义该线程要执行的语句。当线程启动时,run方法中的程序就成为一条独立的执行线程。示例代码如下:

public  class   XianCheng  extends  Thread

{

       public void run()

      {

            System.out.println("run方法执行");

         }

}     

改程序是无法执行的,因为没有main方法,也就是没有启动线程的方法。下面先介绍如何创建线程对象。代码如下:

XianCheng   xc = new  XianCheng();

从上面的代码可以看出,创建线程对象的方法和创建普通对象的方法是一样的。但是这只是对于使用继承Thread类创建线程的方法来说的。我们也可以通过Thread类来定义线程对象,如

Thread  th = new Thread();

2.实现Runnable接口定义线程

      在Runnable接口中具有一个抽象的run方法,在实现Runnable接口时,需要实现run方法。示例代码如下:

public  class  test2  implements  Runnable{

    public   void   run(){

        System.out.println("run方法执行");

        }

}

在使用实现Runnable接口定义的线程中,要比上面复杂些,因为直接创建类的对象创建的并不是一个线程对象,要想创建线程对象必须要借助Thread类。只有Thread类才能定义线程对象。

代码如下:test2     t2 = new  test2();

             Thread  tt2 = new  Thread(t2);

tt2才是线程对象,Thread类具有4个构造器,最常用的就是具有一个参数的,我们可以先创建一个实现Runnable接口的类对象,然后作为Thread类的参数来创建多个线程对象。

当我们建立了一个线程类的时候,就要启动线程,初学者会认为启动线程就是调用线程类中的方法。但这点是错误的,虽然可以用对象名.run()来调用run方法,但这并不是线程的启动。要想启动线程还要调用线程的star方法,如:tt2.start();但要注意,一个线程只能调用一次star方法,第二次启动线程会发生IllegalThreadException异常。有关线程的启动,应用问题以后再做介绍。

好了,有关线程的基础知识先介绍到这里。有不足的地方请大家批评指正。