【发布时间】:2011-02-05 11:42:55
【问题描述】:
好的,我知道创建新线程并在 Java 中运行它的两种标准方法:
在类中实现
Runnable,定义run()方法,并将类的实例传递给新的Thread。当调用线程实例上的start()方法时,会调用类实例的run方法。-
让类派生自
Thread,这样它就可以覆盖方法run(),然后当调用新实例的start()方法时,调用会被路由到被覆盖的方法。
在这两种方法中,基本上都会创建一个新的Thread 对象并调用它的 start 方法。但是,虽然在第二种方法中,调用被路由到用户定义的run() 方法的机制非常清楚,(这是一个简单的运行时多态性),我不明白如何调用start() 方法在 Thread 对象上被路由到实现Runnable 接口的类的run() 方法。 Thread 类是否有一个类型为 Runnable 的私有字段,它首先检查它,如果它被设置然后调用 run 方法,如果它设置为一个对象?这将是一个奇怪的机制 IMO。
线程上对start()的调用如何路由到构造线程时对象作为参数传递的类实现的Runnable接口的run方法?
【问题讨论】:
标签: java multithreading