1
4

4 回答 4

2

new m2().run();

这将运行 m2 对象的 run() 方法(假设 m2 扩展线程而不是实现 Runnable) - 但在当前线程中,而不是实际启动一个线程并在那里运行它。

他们如何与下面的匿名电话进行比较(如何时使用)。

对不在多个地方使用的小/琐碎的事情使用匿名实现。如果它足够复杂以至于您想对其进行测试,那么可能值得转向非匿名类。

于 2013-10-08T07:13:12.953 回答
2
  1. 您不能start()Runnable实例上调用,Runnable没有start()方法。如果您正在谈论调用Thread.run()and Thread.start(),那么会start() 生成一个新线程(实时),但会在顺序run()中执行语句。run()

  2. 来到匿名类与命名类,它只是一种编码风格。人们更喜欢匿名类来编写相当小的接口实现

于 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 回答