疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java多线程的使用


 

   

  Java多线程的使用

  Java有两种方式实现多线程。

  第一种——继承Thread类,并重写run方法

  步骤:

  定义类继承Thread类;

  重写子类的run方法,将线程需要执行的代码写在run方法中;

  创建子类的对象,则创建了线程对象;

  调用该对象的start方法,开启线程。

  实例:

  复制代码

  public class MyThread extends Thread() {

  @Override

  public void run() {

  // 多线程代码

  }

  // 其他代码

  }

  复制代码

  Thread t = new MyThread();

  t.start();

  第二种——实现Runnable接口,用该类的对象构造Thread类

  步骤:

  定义类实现Runnable接口;

  实现接口中的run方法,将线程需要执行的代码写在run方法中;

  用接口对象构造一个Thread对象;

  调用Thread对象的start方法,开启线程。

  实例:

  复制代码

  public class MyClass implements Runnable() {

  public void run() {

  // 多线程代码

  }

  // 其他代码

  }

  复制代码

  MyClass m = new MyClass();

  Thread t = new Thread(m);

  t.start();

  start方法的功能

  启动了线程

  让jvm调用了Thread类(或子类)对象的run方法

  为什么可以有以上两种方式实现多线程?

  对于第一种方式很容易理解。由于重写了Thread类的run方法,调用start方法启动线程后,jvm将调用子类重写的run方法;

  对于第二种方式,调用start方法启动线程后,jvm将调用Thread类的run方法,其代码如下:

  public void run() {

  if (target != null) {

  target.run();

  }


  }

  其中target为Thread类的成员变量,类型为Runnable。在用Runnable对象构造Thread时,会使target引用该接口对象,所以执行target.run()时,实际上执行了接口对象的run方法。