JAVA多线程:什么时候使用哪种实现方式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JAVA多线程:什么时候使用哪种实现方式

JAVA多线程:什么时候使用哪种实现方式

 2013/11/20 0:29:53  tanjiayqq  程序员俱乐部  我要评论(0)
  • 摘要:众所周知,JAVA里实现多线程有两种方式。一是继承Thread,覆盖run()方法:publicclassThreadTest{publicstaticvoidmain(String[]args){newMyThread().start();}}classMyThreadextendsThread{@Overridepublicvoidrun(){System.out.println("Thread.run()");super.run();}}二是实现Runnable接口,实现run()方法
  • 标签:实现 使用 多线程 Java 什么 方式 线程
众所周知,JAVA里实现多线程有两种方式。

一是继承Thread,覆盖run()方法:

class="java" name="code">
public class ThreadTest {
    public static void main(String[] args) {
        new MyThread().start();
    }
}

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Thread.run()");
        super.run();
    }
}


二是实现Runnable接口,实现run()方法:

public class ThreadTest {
    public static void main(String[] args) {
        new Thread(new MyRunnable()).start();
    }
}

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("Runnable.run()");
    }
}

这两种都是常用方法,那么问题来了,我们什么时候用哪种方式?sun公司当初为什么会设计两种实现方式?

很明显,我们在使用继承Thread方式时,有一个很大的缺点,就是我们继承了Thread后就不能继承其他类了。但是如果我们实现Runnable的话,恰好可以解决这个问题。

实际上,我们的Thread类里面有这么一段代码:

    /* What will be run. */
    private Runnable target;

    public void run() {
      if (target != null) {
          target.run();
      }
    }


这是Thread类里面的run()方法,如果target(即Runnable对象)非空的话,它会直接调用Runnable的run()方法。

而Thread()类的run()方法是实现Runnable接口的:

publicclass Thread implements Runnable {
所以无论是哪种实现方式的run()其实都是一样的,但是Runnable方式有很明显的优势,就是它可以继承别的类而非局限于Thread类,Runnable方式说白了就是弥补这个缺陷而设计出来的。所以具体使用哪种方法就根据你实际情况了。

最后介绍个学习网站:http://gz.itcast.cn/
上一篇: java入门总结——参数传递 下一篇: 没有下一篇了!
发表评论
用户名: 匿名