您好我最近发现了一个博客,其中指出:
有时您可能必须实现Runnable以及子类 线。例如,如果创建可以的Thread的子类 执行多个Runnable。这通常就是这种情况 实现一个线程池。
我不确定这句话所指的是什么情况。
你能帮我理解这种情况吗?
感谢。
答案 0 :(得分:1)
点击此链接:"implements Runnable" vs. "extends Thread"
Jon Skeet表示:
实际上,它意味着您可以实现Runnable并从另一个类扩展。
示例:
public class Worker extends Person implements Runnable {...}
您所引用的内容是您实际上需要使用线程子类来实现更复杂的Mechasisms。例如。您实现了一个可以处理多个任务的线程。
public SimpleExecutionService extends Thread() {
private List<Runnable> myTasks;
public SimpleExecutionService(List<Runnable> tasks){
myTasks = tasks;
}
public void run() {
for(Runnable task: myTasks) {
task.run();
}
}
顺便说一句,这种并发机制已经很多了。
答案 1 :(得分:1)
我认为作者并不认为你会在同一个类中实现Runnable
和子类Thread
。当然,如果您从头开始实现一个线程池,那么至少有一个可能扩展Thread
的工作器实现,并且您将拥有可能实现Runnable
的任务。这将是一个非常基本和直接的场景。
答案 2 :(得分:0)
当你想在Thread实现的类中扩展另一个类时,实际上Runnable接口是uesd。如果扩展Thread类,则无法扩展其他重要类,因为java不支持多重继承na。因此,elimaniting这个问题,Runnable线程接口进入图片,避免这个问题.....