为什么我们需要一个Runnable来启动线程?

5 java multithreading interface runnable

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

sgo*_*les 6

我们需要将runnable对象传递给线程对象的构造函数的原因是线程必须有一些方法来获取run()我们希望线程执行的方法.

拿一个例如

public class CustomApplet extends Applet {
          public void init() {
                Runnable ot = new OurClass();
                Thread th = new Thread(ot);
                th.start();
         }
   }
Run Code Online (Sandbox Code Playgroud)

由于我们不再重写run()Thread类的run()方法,因此执行Thread类的默认方法; 这个默认run()方法看起来像这样

public void run() {
         if (ot!= null) {
                    ot.run();
                   }
              } 
Run Code Online (Sandbox Code Playgroud)

因此,ot我们传递给线程构造函数的runnable对象.因此,线程开始使用run()Thread类的方法执行,该方法立即调用run()runnable对象的方法.


Ish*_*tar 5

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