线程创建和启动

这个问题在这里已经有了答案:

  • “实现可运行”与“扩展线程”40个答案

  • 一般来说,你不应该扩展Thread ,而应该实现Runnable 。 你的例子会变成:

    class MyRunnable implements Runnable {
    
       public void run() {
          // Whatever needs to be done.
       }
    }
    
    MyRunnable obj = new MyRunnable();
    Thread t = new Thread(obj);
    t.start()
    

    是的,是有区别的:你应该延长Thread ,但使用new Thread(myRunnable) 这与您的第一种方法类似,只是您的方式在扩展Thread而不是实现Runnable时被误导。 所以这样做:

    class MyRunnable implements Runnable {
       public void run() { ... }
    }
    
    Thread t = new MyThread(new MyRunnable());
    t.start();
    

    或者更方便地,

    new Thread(new Runnable() { public void run() {
      ... stuff ...
    }}).start();
    

    一定要区分ThreadRunnable的概念:前者是实际系统资源的重量级处理; 后者只是一种方法的持有者。


    Thread t = new Thread(obj); 需要Runnable obj - 推荐的方法。

    MyThread obj = new MyThread(); 要求你extend目前被认为不可取的 Thread

    有关辩论的细节,请参阅“implements Runnable”与“extends Thread”。

    链接地址: http://www.djcxy.com/p/92077.html

    上一篇: Thread creation and starting

    下一篇: Use of creating a Thread by extending a Thread class