为什么我应该使用Runnable而不是Thread?

这个问题在这里已经有了答案:

  • “实现可运行”与“扩展线程”40个答案

  • 1. Java不支持多继承,这意味着你只能扩展一个Java类,所以一旦你扩展了Thread类,你就失去了机会,不能扩展(继承)java中的另一个类。

    2.在OOP中,扩展类通常意味着增加新的功能,修改或改进行为。 如果您没有对Thread进行任何修改,请改为使用Runnable接口。

    3.实现Runnable使你的类更加灵活(你可以实现多个接口)。


    其中一个重大优势是:您不必在新线程上运行Runnable

    有一天,您可能会决定不是在新线程上运行它,而应该直接(在当前线程上)或线程池上运行它 - 然后可以将new Thread(runnable).start()更改为threadPool.submit(runnable)runnable.run() - 并且更改仅影响一个地方。

    另外,如果你让一个Runnable挂起,它不会浪费资源 - 它不会占用线程限制(如果有的话),也不会为堆栈预留空间。 假设你想要有一个队列可以一次完成一个 - 当然,你可以有一个Queue<Thread> ,然后在前一个线程完成时启动每个线程,但是这样会浪费大量内存,运行线程。 如果您使用Runnable队列,除非实际运行时,则不会使用更多内存。

    链接地址: http://www.djcxy.com/p/92069.html

    上一篇: Why should I use Runnable instead of Thread?

    下一篇: Advantage of Thread over Runnable