深入浅出Java多线程程序设计

豆豆网   技术应用频道   2006年03月31日    社区交流

本文详细介绍深入浅出Java多线程程序设计

  public class MyThread extends Thread {
  int count= 1, number;
  public MyThread(int num) {
   number = num;
   System.out.println("创建线程 " + number);
  }
  public void run() {
   while(true) {
    System.out.println("线程 " + number + ":计数 " + count);
    if(++count== 6) return;
   }
  }
  public static void main(String args[]) {
   for(int i = 0; i < 5; i++) new MyThread(i+1).start();
  }
}

  这种方法简单明了,符合大家的习惯,但是,它也有一个很大的缺点,那就是如果我们的类已经从一个类继承(如小程序必须继承自 Applet 类),则无法再继承 Thread 类,这时如果我们又不想建立一个新的类,应该怎么办呢?

  我们不妨来探索一种新的方法:我们不创建 Thread 类的子类,而是直接使用它,那么我们只能将我们的方法作为参数传递给 Thread 类的实例,有点类似回调函数。但是 Java 没有指针,我们只能传递一个包含这个方法的类的实例。那么如何限制这个类必须包含这一方法呢?当然是使用接口!(虽然抽象类也可满足,但是需要继承,而我们之所以要采用这种新方法,不就是为了避免继承带来的限制吗?)

  Java 提供了接口 java.lang.Runnable 来支持这种方法。

  方法二:实现 Runnable 接口

  Runnable 接口只有一个方法 run(),我们声明自己的类实现 Runnable 接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。下面是一个例子:

责编:豆豆技术应用

正在加载评论...