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:
推荐阅读
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- dubbo基本认识
- Linux下面如何查看tomcat已经使用多少线程
- 多线程NSOperation
- EditText默认不获取焦点弹出键盘
- Dubbo引用服务
- spring|spring boot中设置异步请求默认使用的线程池
- iOS富文本为html时,修改默认字体颜色
- Android中非UI主线程能不能操作UI()
- CountDownLatch-线程并发的发令枪