问问题
2217 次
4 回答
2
new m2().run();
这将运行 m2 对象的 run() 方法(假设 m2 扩展线程而不是实现 Runnable) - 但在当前线程中,而不是实际启动一个线程并在那里运行它。
他们如何与下面的匿名电话进行比较(如何时使用)。
对不在多个地方使用的小/琐碎的事情使用匿名实现。如果它足够复杂以至于您想对其进行测试,那么可能值得转向非匿名类。
于 2013-10-08T07:13:12.953 回答
2
您不能
start()
在Runnable
实例上调用,Runnable
没有start()
方法。如果您正在谈论调用Thread.run()
andThread.start()
,那么会start()
生成一个新线程(实时),但会在顺序run()
中执行语句。run()
来到匿名类与命名类,它只是一种编码风格。人们更喜欢匿名类来编写相当小的接口实现
于 2013-10-08T07:13:47.623 回答
1
.run() 将执行该方法, .start() 将启动将执行 run() 的线程
于 2013-10-08T07:11:47.963 回答
0
线程可以通过扩展Thread类,实现Runnable接口和Callable接口来实现。
如果你想返回一个值或抛出一个异常,那么使用 Callable 否则使用 Runnable 作为扩展 Thread 类限制了 Class 继承并且也使过程变得繁重。
如果您想了解更多信息,下面的链接可能会很有用: 在 Java 中实现线程的不同方法
于 2014-07-25T08:30:08.773 回答