[英]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.