在Java中为什么Thread类被创建为Concrete Class?

Ult*_*eee 0 java multithreading thread-safety threadpool

我们知道有两种方法可以在Java中创建Thread.

  1. 实现Runnable接口
  2. 扩展Thread类[Thread是一个具有run()方法的默认实现的具体类]

在第二种方法中,我们必须提供run()方法的实现来执行我们的线程逻辑.如果是这样,那么为什么JDK开发人员没有在Thread类中将run()方法作为抽象?

我有兴趣了解其背后的原因,为Thread Class中的run()方法提供默认实现.

kaj*_*acx 6

如果Thread#run()是抽象的,那么以下将是一个编译错误:

Thread t = new Thread(myRunnable);
Run Code Online (Sandbox Code Playgroud)