Dubbo 默认线程池fixed

@SPI("fixed") public interface ThreadPool {/** * 线程池 * * @param url 线程参数 * @return 线程池 */ @Adaptive({Constants.THREADPOOL_KEY}) Executor getExecutor(URL url); }

com.alibaba.dubbo.common.threadpool.ThreadPool
fixed=com.alibaba.dubbo.common.threadpool.support.fixed.FixedThreadPool cached=com.alibaba.dubbo.common.threadpool.support.cached.CachedThreadPool limited=com.alibaba.dubbo.common.threadpool.support.limited.LimitedThreadPool 支持三种线程池

public class FixedThreadPool implements ThreadPool {public Executor getExecutor(URL url) { String name = url.getParameter(Constants.THREAD_NAME_KEY, Constants.DEFAULT_THREAD_NAME); int threads = url.getParameter(Constants.THREADS_KEY, Constants.DEFAULT_THREADS); int queues = url.getParameter(Constants.QUEUES_KEY, Constants.DEFAULT_QUEUES); return new ThreadPoolExecutor(threads, threads, 0, TimeUnit.MILLISECONDS, queues == 0 ? new SynchronousQueue() : (queues < 0 ? new LinkedBlockingQueue() : new LinkedBlockingQueue(queues)), new NamedThreadFactory(name, true), new AbortPolicyWithReport(name, url)); }}

int threads = url.getParameter(Constants.THREADS_KEY, Constants.DEFAULT_THREADS);
这里面的Constants.DEFAULT_THREADS如下:
public static final int DEFAULT_THREADS = 200; dubbo默认线程池大小200 dubbo默认线程池是fixed




Dispatcher
  • all 所有消息都派发到线程池,包括请求,响应,连接事件,断开事件,心跳等。
  • direct 所有消息都不派发到线程池,全部在 IO 线程上直接执行。
  • message 只有请求响应消息派发到线程池,其它连接断开事件,心跳等消息,直接在 IO 线程上执行。
  • execution 只请求消息派发到线程池,不含响应,响应和其它连接断开事件,心跳等消息,直接在 IO 线程上执行。
  • connection 在 IO 线程上,将连接断开事件放入队列,有序逐个执行,其它消息派发到线程池。
@SPI(AllDispatcher.NAME) public interface Dispatcher {/** * dispatch the message to threadpool. * * @param handler * @param url * @return channel handler */ @Adaptive({Constants.DISPATCHER_KEY, "dispather", "channel.handler"}) // 后两个参数为兼容旧配置 ChannelHandler dispatch(ChannelHandler handler, URL url); }

/** * 默认的线程池配置 * * @author chao.liuc */ public class AllDispatcher implements Dispatcher {public static final String NAME = "all"; public ChannelHandler dispatch(ChannelHandler handler, URL url) { return new AllChannelHandler(handler, url); }}

【Dubbo 默认线程池fixed】
默认线程池派发模型模型dispatcher=all:

    推荐阅读