线程创建的两种方法

在一个线程中创建一个新线程可以有两种方法,一种是继承Thread类,一种是实现Runnable接口。具体实现如下:

第一种方法:

        创建一个新类,并且继承自Thread类,在这个新类中重写run方法,用以覆盖Thread类中原有的run方法。run方法中所写入的执行语句就是这个类所创建的新的线程所要执行的任务。

  class DemoThread extends Thread

{

    private String name;   // 这个是线程的名称

    DemoThread(String name)

     {

         this.name=name;

     }

     public void run()

     {

        //在这里写入线程所要执行的任务的代码块

     }

}                         

public class DemoMain

{

    public static void main(String [] args)

       {

         DemoThread d1=new DemoThread("小明");//创建了线程

         DemoThread d2=new DemoThread("Jacky");//创建了线程

          d1.start();//开启新创建的线程,并且调用run 方法

          d2.start();//开启新创建的线程,并且调用run 方法

       }

}

第二种方法:

        上面的方法创建新线程时有一些局限性,那就是当DemoThread类需要继承一个其他的父类时,它就不能直接继承Thread类了;还有一点就是这种继承的方法,会把一个类完全变成Thread类下面的的一个体系,它会把一些不需要的东西也都继承下来,有时候这并不是很科学。我们下面说到的这种方法就很好地解决了这些局限性,它创建一个实现了Runnable接口的类,重写run方法

class DemoThread implements Runnable

{

   public void run()

   {

     //写入要实现的任务代码

   }

}

class DemoMain()

{

   DemoThread d=new DemoThread();       

   Thread  t1=new Thread(d);    //通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数的参数进行传                                                        //  递,这是因为线程所要执行的任务都封装在了Runnable接口的子类对象的run方法中,线程对象创建                                                      // 时就必须明确要运行的任务。

   Thread  t2=new Thread(d);

    t1.start();    //调用start方法开启线程。

    t2.start();

   

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值