我们可以使用Implementing Runnable或扩展线程类来创建线程。任何人都可以告诉我性能明智,哪个更快实现Runnable或扩展Thread类,为什么?我也知道在实现Runnable时我们可以实现更多的接口并扩展一个类。如果我们直接扩展Thread类,那么扩展类是我们失败的。但两种情况下是否有任何性能差异
答案 0 :(得分:0)
在性能方面,两者之间没有区别。然而,使用“implements Runnable”是更可取的,因为它为您提供了更多的自由(扩展另一个类,...),并且在多个线程之间共享相同的对象(这也减少了已用内存)。
答案 1 :(得分:0)
取决于(一如既往):
lstview
扩展名没有任何缺点,除非它不灵活且难以测试(例如在单元测试中)。Thread
更灵活,因为您可以使用线程池将其传递给Runnable
。通过这样做,您将获得更好的性能,因为每次执行的线程创建开销都将被删除。如果实现Executor
,您可以通过各种方式执行代码(在单元测试中同步,使用执行程序,或者甚至用Runnable
包装它)。并且纯线程扩展永远不会有更好的性能,它只能是相同的。仅通过允许多个接口或使用独立继承来实现Thread
总是更好的选择,它只是更好的设计。在此之后,我永远不会延长Runnable
。