为什么我们需要在使用Runnable
接口创建线程时传递runnable实例?
答案 0 :(得分:5)
我们需要将runnable对象传递给线程对象的构造函数的原因是线程必须有一些方法来获取我们希望线程执行的run()
方法。
拿一个例如
public class CustomApplet extends Applet {
public void init() {
Runnable ot = new OurClass();
Thread th = new Thread(ot);
th.start();
}
}
因为我们不再
重写Thread类的run()
方法,Thread类的默认run()
方法是
执行;这个默认的run()
方法看起来像这个
public void run() {
if (ot!= null) {
ot.run();
}
}
因此,ot
是我们传递给线程构造函数的可运行对象。因此,线程开始使用Thread类的run()
方法执行,该方法立即调用runnable对象的run()
方法。
答案 1 :(得分:4)
你想要新线程做什么?您可能希望它执行一些代码。但它必须运行什么代码?你不能只把代码放在一个线程中。 Java没有函数指针。解决该问题的一个小技巧是使用实现函数的对象。该函数是run
。因此,对象必须具有run
方法。这就是Runnable接口所做的,确保它有一个run方法。因此,如果我们给出一个Runnable对象,那么线程就知道要做什么了!