5

为什么我们需要在使用Runnable接口创建线程时传递可运行实例?

4

2 回答 2

6

我们需要将可运行对象传递给线程对象的构造函数的原因是线程必须有某种方法来获取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是我们传递给线程构造函数的可运行对象。run()所以线程从Thread 类的方法开始执行,它立即调用run()我们的可运行对象的方法。

于 2011-05-18T08:46:23.303 回答
4

你想让新线程做什么?您可能希望它执行一些代码。但它必须运行什么代码?你不能只是把代码放在一个线程中。Java没有函数指针。解决这个问题的一个小技巧是使用一个实现函数的对象。那个函数是run。所以,对象必须有run方法。这就是 Runnable 接口所做的,确保它有一个 run 方法。因此,如果我们给出一个 Runnable 对象,线程就知道该做什么了!

于 2011-05-18T08:57:12.403 回答