有两种方法可以用Java语言创建一个线程,一种是通过实现'Runnable'而另一种是通过扩展'Thread'类。在我正在阅读的书中(Herbert Schildt),有人写道,实施'Runnable'界面更好,他们已经提供了理由,但我无法理解。任何人都可以解释为什么有两种方法在java中创建一个线程,为什么实现这个接口是一个更好的解决方案呢?
答案 0 :(得分:1)
使用Runnable
会更好,特别是Java支持匿名临时类。继承Thread
非常麻烦。
这本书有点过时了。还有第三种方法:改为使用Callable
。这允许您指定异常并具有返回类型。
简单地说,您向执行人提交Callable
,并向您返回Future
。然后,您可以使用该未来来检查线程的返回值。
答案 1 :(得分:1)
实现Runnable允许松耦合,这是一种很好的设计模式。相关(如果不是重复):"implements Runnable" vs. "extends Thread"
答案 2 :(得分:0)
与扩展相比,实现接口是一种很好的做法。您可以实现任意数量的接口,并且只能扩展一个类。这总结了它。
答案 3 :(得分:0)
您应该使用实现Runnable,因为它在软件设计的意义上更好。
例如,您可以为所有Runnables创建一个abstrace BaseImplementation。如果你继承了一个线程,你就无法做到。
但是这本书似乎是一本Java 5之前的书。使用Java 5您将拥有一个更新的Interface Callable。此接口指定返回值。 Wil新的Executors更容易启动Threads和Threadpools。您应该更喜欢实现Callables