Java中多线程的创建方法

来源:互联网 发布:郑州淘宝网店加盟被抓 编辑:程序博客网 时间:2024/05/21 08:02


摘要:本文主要介绍java中创建多线程的两种方法及其相互关系和优缺点



方法概述

方法1:继承Thread类;重写run方法;在主程序中调用新创建类的start方法。主要代码逻辑如下:

//创建线程类

publicclassThreadDemo1extends Thread

{

   publicvoid run()

   {

      System.out.println("ThreadDemo1 run....");

   }

}

//运行线程

publicclassThreadTest

{

   publicstaticvoid main(String[]args)

   {

      ThreadDemo1t1 =new ThreadDemo1();

      t1.start();

   }

}

方法2:实现Runnable接口中的run方法;用Runnable对象创建一个Thread对象并调用Thread对象的start方法。主要的代码逻辑如下:

//创建Runnable

publicclassRunnableDemo1implements Runnable

{

   @Override

   publicvoid run()

   {

      System.out.println("RunnableDemo1 run....");

   }

}

//运行线程

publicclassThreadTest

{

   publicstaticvoid main(String[]args)

   {

      Runnabler1 =new RunnableDemo1();

      Threadt2 =new Thread(r1);

      t2.start();

   }

}

【说明】

1.两种线程创建方法都需要重写run方法,run方法封装了线程的运行任务

2.  new出一个线程后并没有启动线程,两种方法都需要显式的调用start方法来启动线程。


两种方法的比较

根据以上的描述发现:方法1是使用继承的方法,方法2使用的是实现接口的方法。因此使用继承的方法避免不了java中单一继承的缺陷,同时也继承了Thread类中大部分不必要的功能;而使用实现Runnable接口的方法,就显得简单小巧,因为Runnable接口中只声明了一个run方法,只需将线程运行任务封装在该方法中即可;实际上通过观察源码可以发现Thread类也implementsRunnable接口,并且保存了一个Runnable类型的实例变量,Thread类的run方法也只是调用了该实例变量的run方法。综上所述:使用实现Runnable接口的方法简单小巧又语义明确,将任务封装成对象;同时避免了java单一继承的局限性,因此这是一种常用的方法。





原创粉丝点击