我刚开始学习Java的线程编程,有一个基础问题想问一下。(我查了一下,但并没有找到之前被问过这个问题)
我了解到可以通过继承Thread类或实现Runnable接口来创建线程。 我看到有一段代码在同一个类中同时使用了两种方式。
public class ThreadExample extends Thread implements Runnable {
}
我想知道什么样的情况下需要这样做,以及是否有任何优势,如果有的话是什么。
我刚开始学习Java的线程编程,有一个基础问题想问一下。(我查了一下,但并没有找到之前被问过这个问题)
我了解到可以通过继承Thread类或实现Runnable接口来创建线程。 我看到有一段代码在同一个类中同时使用了两种方式。
public class ThreadExample extends Thread implements Runnable {
}
我想知道什么样的情况下需要这样做,以及是否有任何优势,如果有的话是什么。
扩展Thread
并实现Runnable
是无用的(Thread
已经实现了Runnable
)。你几乎总是希望实现Runnable
(而不是扩展Thread
)。这使您可以直接使用Thread
(不建议使用),或者使用java.util.concurrent
中的新版ThreadPool
实现(推荐使用),从而具有更大的灵活性。
Thread
已经实现了Runnable
。Cloneable
)。在这种情况下,即使它们的父级已经适合,标记每个允许的类可能更加明确,因此更有用。Runnable接口意味着将一个任务分配给多个线程,而Thread类则是每个线程都有一个唯一的关联对象。