我是靠谱客的博主 懦弱荔枝,最近开发中收集的这篇文章主要介绍线程调度(Dispatcher),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       在前面的章节中,我们已经了解到Actor的基本知识点,例如创建方式、生命周期、消息通信、监控、容错。关于actor通信,大家都很熟悉,通过tell和ask就可以实现,但是,现在我想跟大家谈论一下actor的消息是如何进行调度的。

     Dispatcher

       在Akka中,为了保证消息处理的及时性和线程的使用效率,Dispatcher对线程池做了一些协调工作。简单来说,dispatcher就相当于一个消息控制中心,负责对消息进行分发和派送。由此可见,合理运用Dispatcher可以提升系统的吞吐量。

       在实际项目中,我们可能会遇到许多不同情况的任务,但大致可以分为两种:1.耗时长或长时间阻塞。2.耗时短,不会造成阻塞。针对不同的情况,在Actor系统中,我们可以选择不同的dispatcher进行处理,从而做到线程资源隔离。

     Executor

       在具体讲解Dispatcher使用方式之前,我们先了解一下它的核心内容-线程池(Executor),它提供了执行异步任务的策略,分为两种:

线程池

描述

thread-pool-executor

基于普通的线程池,它有一个工作队列(存储任务),当线程空闲时会从队列中获取任务并执行。

fork-join-executor

基于工作窃取的线程池(采用分而治之原理),它把大的任务拆分成小的任务然后并行执行,最后合并并结果,当某线程的任务队列没有任务时,会主动从其它线程的队列中获取任务。fork-join性能更佳,Akka默认选项。

     Akka文件配置

       这里先插入一个小知识点,我们先简单学习一下Akka的文件配置和加载。在默认情况下,程序会加载classpath下application.conf、application.json、application.properties文件。这里使用application.properties示例:

akka.log-config-

最后

以上就是懦弱荔枝为你收集整理的线程调度(Dispatcher)的全部内容,希望文章能够帮你解决线程调度(Dispatcher)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部