Java多线程编程

时间:2014-03-14 18:39:37

标签: java multithreading interface superclass

有两种方法可以用Java语言创建一个线程,一种是通过实现'Runnable'而另一种是通过扩展'Thread'类。在我正在阅读的书中(Herbert Schildt),有人写道,实施'Runnable'界面更好,他们已经提供了理由,但我无法理解。任何人都可以解释为什么有两种方法在java中创建一个线程,为什么实现这个接口是一个更好的解决方案呢?

4 个答案:

答案 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

"implements Runnable" vs. "extends Thread"