我们需要实现Runnable以及子类Thread的场景

时间:2015-11-11 08:03:00

标签: java multithreading threadpool

您好我最近发现了一个博客,其中指出:

  

有时您可能必须实现Runnable以及子类   线。例如,如果创建可以的Thread的子类   执行多个Runnable。这通常就是这种情况   实现一个线程池。

我不确定这句话所指的是什么情况。

你能帮我理解这种情况吗?

感谢。

3 个答案:

答案 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线程接口进入图片,避免这个问题.....