![](/img/trans.png)
[英]Why do we need to use threads for running Kafka consumers? And how many threads do we need?
[英]Why do we need a Runnable to start threads?
为什么我们需要在使用Runnable
接口创建线程时传递runnable实例?
我们需要将runnable对象传递给线程对象的构造函数的原因是线程必须有一些方法来获取我们希望线程执行的run()
方法。
拿一个例如
public class CustomApplet extends Applet {
public void init() {
Runnable ot = new OurClass();
Thread th = new Thread(ot);
th.start();
}
}
由于我们不再重写run()
Thread类的方法,默认run()
执行Thread类的方法; 这个默认的run()
方法看起来像这样
public void run() {
if (ot!= null) {
ot.run();
}
}
因此, ot
是我们传递给线程构造函数的可运行对象。 因此,线程开始使用Thread类的run()
方法执行,该方法立即调用runnable对象的run()
方法。
你想要新线程做什么? 您可能希望它执行一些代码。 但它必须运行什么代码? 你不能只把代码放在一个线程中。 Java没有函数指针。 解决该问题的一个小技巧是使用实现函数的对象。 该功能run
。 因此,该对象必须具有run
方法。 这就是Runnable接口所做的,确保它有一个run方法。 因此,如果我们给出一个Runnable对象,那么线程就知道该怎么做了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.