我知道Java中Runnable
接口和Thread
类之间的基本区别。
但是,这两者之间是否存在与Callstack相关的差异?
答案 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