线程池
消息派发器中的线程池“dispatcher-event-loop”
这个线程池,是用来派发Spark中Endpoint的消息的,比如OnStart,RpcMessage等。
这个线程池创建的时机是在Dispatcher对象创建的初始化过程完成的。
这个线程池的线程数选择是计算机的CPU核数,而且采用的是Fixed线程池。
/** Thread pool used for dispatching messages. */
private val threadpool: ThreadPoolExecutor = {
val numThreads = nettyEnv.conf.getInt("spark.rpc.netty.dispatcher.numThreads",
math.max(2, Runtime.getRuntime.availableProcessors()))
val pool = ThreadUtils.newDaemonFixedThreadPool(numThreads, "dispatcher-event-loop")
for (i <- 0 until numThreads) {
pool.execute(new MessageLoop)