• Thread 才是 Java 里对线程的唯一抽象,Runnable 只是对任务(业务逻辑)的抽象。Thread 可以接受任意一个 Runnable 的实例并执行。
    • Thread 自身实现了Runnable接口
    • 一般情况下使用Runnable方式创建线程。除非你需要重写Thread类除了Run()方法外的其他方法来自定义线程,否则不建议使用继承Thread的方式来创建。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应将类归为子类。
    • 一个线程的start()方法只能被调用一次,多次调用会报错。

      1. 1.通过继承Thread
      2. class PrimeThread extends Thread {
      3. long minPrime;
      4. PrimeThread(long minPrime) {
      5. this.minPrime = minPrime;
      6. }
      7. public void run() {
      8. // compute primes larger than minPrime
      9. . . .
      10. }
      11. }
      12. PrimeThread p = new PrimeThread(143);
      13. p.start();
      14. -------------------------------------------------------
      15. 2.通过实现Runnable
      16. class PrimeRun implements Runnable {
      17. long minPrime;
      18. PrimeRun(long minPrime) {
      19. this.minPrime = minPrime;
      20. }
      21. public void run() {
      22. // compute primes larger than minPrime
      23. . . .
      24. }
      25. }
      26. PrimeRun p = new PrimeRun(143);
      27. new Thread(p).start();

    https://www.yuque.com/wanghuaihoho/gobbon/bwrhod