Runnable接口和与Call Stack相关的Thread类之间的区别

时间:2014-06-27 10:05:13

标签: java

我知道Java中Runnable接口和Thread类之间的基本区别。

但是,这两者之间是否存在与Callstack相关的差异?

2 个答案:

答案 0 :(得分:0)

区别在于,如果你扩展Thread类,你将无法扩展其他任何东西,但你几乎可以从类中调用start()方法,因为它继承了。 (别忘了覆盖run()方法)。

MyThreadClass t = new MyThreadClass();
t.start();

另一个区别是,如果你实现了Runnable,你可以根据需要扩展另一个类,但是你需要将对象作为参数传递,以便能够运行它,因为你只实现了run()方法。

Thread t = new Thread(new MyRunnableClass());
t.start();

除此之外,它们的执行方式没有任何区别。

编辑:真的不明白你的意思是“callstrack”。

答案 1 :(得分:0)

调用堆栈跟踪之间的区别在于您看到了额外的级别。

e.g。用普通线程

at somepackage.SomeClass.someMethod
at java.lang.Thread.run

如果你使用MyRunnableClass,你会看到

at somepackage.SomeClass.someMethod
at mypackage.MyRunnableClass.run
at java.lang.Thread.run