Java创建线程的方式
1 官方API里面的说法
通过官方 API 可以发现创建线程的方式有两种,第一种是通过继承 Thread 类,重写 run 方法;第二种是通过实现 Runnable 接口,创建线程时传入该接口的子类。
2 我的观点
这种说法是不严谨的,Java 中代表线程的就只有 Thread 这个类,我们可以分析 start 方法源码,线程的执行单元就是 run 方法,你可以通过继承 Thread 然后重写 run 方法实现自己的业务逻辑,也可以实现 Runnable 接口实现自己的业务逻辑。java虚拟机帮我们创建了线程,我们只需要重写run方法来实现自己的逻辑。
@Override
public void run() {
// 如果构造 Thread 时传递了 Runnable,则会执行 Runnable 的 run 方法
if (target != null)
{
target.run();
}
// 否则需要重写 Thread 类的 run 方法 }
3 总结
通过源码发现,创建线程只有一种方式那就是构造 Thread 类,而实现线程的执行单元则有两种方式,第一种是重写 Thread 类的 run 方法,第二种是实现 Runnable 接口的 run 方法,并且将 Runnable 实例用作构造 Thread 的参数。