Skip to main content

moregeek program

邮箱中的qt线程设计-多极客编程

邮箱(deepin-mail)主要使用Qt框架开发,是一个有大量并行任务且需要监控进度和结果的项目,任务的优先级调整和支持取消回滚也是必不可少。Qt已经为我们提供了多种线程设计的方法,可以满足绝大部分使用场景,但是每一种方案单拎出来都不能很恰到好处的在项目中使用,本文主要对项目中的线程设计进行介绍,通过将多个Qt线程方案相结合,衍生出一种适合邮箱这类型项目的应用方法。浅谈Qt中的线程方法QThre

Read More

线程池的概念和使用-多极客编程

线程池思想概述 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果。今天我们就来

Read More

node.js event loop 的三大常见理解误区和正确概念辨析-多极客编程

Node.js Event loop 监控器。高的 frequency 和低的持续时间是最理想的 event loop 状态。 上图显示三点半到五点半之间,event loop 的 frequency 骤降,然后 duration 居高不下。 Node.js 是一个基于事件的平台。 这意味着在 Node 中发生的一切都是对事件的反应。通过 Node 的事务会遍历级联的回调(a cascade o

Read More

【深入分析java线程池的实现原理】_13136445的博客-多极客编程

前言线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处: 1、降低资源消耗; 2、提高响应速度; 3、提高线程的可管理性。Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。demo1、​​Exec

Read More

结合rocketmq 源码,带你了解并发编程的三大神器_华为云开发者社区的博客-多极客编程

摘要:本文结合 RocketMQ 源码,分享并发编程三大神器的相关知识点。本文分享自华为云社区《​​读 RocketMQ 源码,学习并发编程三大神器​​》,作者:勇哥java实战分享。这篇文章,笔者结合 RocketMQ 源码,分享并发编程三大神器的相关知识点。1 CountDownLatch 实现网络同步请求CountDownLatch 是一个同步工具类,用来协调多个线程之间的同步,它能够使一个

Read More

使用kafka assistant监控kafka关键指标_4f3的博客-多极客编程

使用Kafka Assistant监控Kafka关键指标使用Kafka时,我们比较关心下面这些常见指标。 Kafka Assistant下载地址:​​http://www.redisant.cn/ka​​broker度量指标活跃控制器数量该指标表示 broker 是否就是当前的集群控制器,其值可以是 0 或 1。如果是 1,表示 broker 就是当前的控制器。任何时候,都应该只有一个 broke

Read More

多线程介绍以及线程池的使用和业务场景_浅羽技术的博客-多极客编程

多线程介绍、列举线程池和业务场景: 1).什么是多线程 1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务 进程 ->车间,线程->车间工人 多线程技术可以提高程序的执行效率 比如同时开启3条线程分别下载3个文件 2).多线程的原理 同一时间,CPU只能处理1条线程,只有1条线程在工作(执行) 多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换) 如果C

Read More

java多线程 线程池的生命周期及运行状态_wx636d0c5e64939的博客-多极客编程

(目录) 一、说明 线程池的生命周期 线程池的状态runState和工作线程数量workerCount共同保存在 AtomicInteger 类型的控制变量 ctl 中 ctl高三位保存运行状态(2^3^=8>5),低29位保存工作线程的数量(2^29^-1) // 初始运行状态为RUNNING,线程数为0 private final AtomicInteger ctl = n

Read More

java多线程 threadpoolexecutor-rejectedexecutionhandler拒绝执行策略_wx636d0c5e64939的博客-多极客编程

(目录) 一、说明 RejectedExecutionHandler 当线程池已经被关闭,或者任务数超过maximumPoolSize+workQueue时执行拒绝策略 ThreadPoolExecutor.AbortPolicy 默认拒绝策略,丢弃任务并抛出RejectedExecutionException异常 ThreadPoolExecutor.DiscardPolicy 直接丢弃任务,

Read More

记一次生产中使用completablefuture遇到的坑_wx630f055ce23fc的博客-多极客编程

为什么使用CompletableFuture业务功能描述:有一个功能是需要调用基础平台接口组装我们需要的数据,在这个功能里面我们要调用多次基础平台的接口,我们的入参是一个id,但是这个id是一个集合。我们都是使用RPC调用,一般常规的想法去遍历循环这个idList,但是呢这个id集合里面的数据可能会有500个左右。说多不多,说少也不少,主要是在for循环里面多次去RPC调用是一件特别费时的事情。我

Read More

线程池中多余的线程是如何回收的?_码农小宋的博客-多极客编程

最近阅读了JDK线程池​​ThreadPoolExecutor​​的源码,对线程池执行任务的流程有了大体了解,实际上这个流程也十分通俗易懂,就不再赘述了,别人写的比我好多了。不过,我倒是对线程池是如何回收工作线程比较感兴趣,所以简单分析了一下,加深对线程池的理解吧。那么,就以JDK1.8为例分析吧。1. runWorker(Worker w)工作线程启动后,就进入​​runWorker(Worke

Read More

动态线程池使用_码农小宋的博客-多极客编程

1、复制到项目lib下2、File->Project Structure... ->Modeles  ->Dependencies找到目录下的jar包引用进去3、配置pom.xml<!--动态线程池配置 begin--> <dependency> <groupId>com.spz</groupId> <

Read More

工作中禁止使用executors快捷创建线程池?_wx630f055ce23fc的博客-多极客编程

在很多公司(如阿里、华为等)的编程规范中,非常明确地禁止使用Executors快捷创建线程池,为什么呢?这里从源码讲起,介绍使用Executors工厂方法快捷创建线程池将会面临的潜在问题。一 问题?1.1 newFixedThreadPool的潜在问题基本使用// 线程池 ExecutorService singleThreadExecutor = Executors.newFixe

Read More

java多线程(3):threadpool(下)_湘王的博客-多极客编程

您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~除了可以通过ThreadPoolExecutor自定义线程池外,同Stream API中的Collectors一样,多线程里的Executors类也提供了一组相关的线程池工具,可以直接拿来用,不用考虑用什么队列合适的问题。Javac除了传统的四大线程池工具:1、newFixedThreadPool定长线程池2、newCachedThre

Read More

java多线程(3):threadpool(中)_湘王的博客-多极客编程

您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~线程池是个神器,用得好会非常地方便。本来觉得线程池的构造器有些复杂,即使讲清楚了对今后的用处可能也不太大,因为有一些Java定义好的线程池可以直接使用。但是(凡事总有个但是),还是觉得讲一讲可能跟有助于理解后面的常用线程池,所以该打脸还是打吧-_-!因为直接结合代码看会更清楚一些,所以我把带注释的代码贴出来:public class T

Read More

java线程池源码深度解析_wx630f055ce23fc的博客-多极客编程

核心机制再分析源码之前,我们还是先回顾和熟悉下线程的核心工作机制。线程池工作原理线程池采用的是一种生产者-消费者的模型,如下图:主线程调用execute、或者submit等方法提交任务给线程池。如果线程池中正在运行的工作线程数量小于corePoolSize(核心线程数量),那么马上创建线程运行这个任务。如果线程池中正在运行的工作线程数量大于或等于 corePoolSize(核心线程数量),那么将这

Read More

java线程池submit阻塞获取结果实现原理_wx630f055ce23fc的博客-多极客编程

前言Java线程池中提交任务运行,通常使用​​execute()​​方法就足够了。那如果想要实现在主线程中阻塞获取线程池任务运行的结果,该怎么办呢?答案是用​​submit()​​方法提交任务。这也是面试中经常被问到的一个知识点,​​execute()​​和​​submit()​​提交任务的的区别是什么?底层是如何实现的?案例演示现在我们通过简单的例子演示下submit()方法的妙处。@Testp

Read More

从开源项目看线程池的使用_wx630f055ce23fc的博客-多极客编程

作为一个Java开发线程池的使用是一个绕不过去的坎,如何正确的使用线程池是每个开发面临的问题,今天我们就从开源项目中来看看那些顶级开源项目中是如何使用线程池。下面我们就以笔者最近参与的开源项目RocketMQ为例子同时结合笔者在工作中遇到的一些使用一些不好的习惯来说一下线程池使用。会从一下几个方面来说:1\. 线程池的创建首先我们看一下RocketMQ的线程创建方式,以 ​​BrokerContr

Read More

自己动手写线程池——向jdk线程池进发_wx630f055ce23fc的博客-多极客编程

JDK线程池一瞥我们首先看一个JDK给我们提供的线程池​​ThreadPoolExecutor​​的构造函数的参数:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,

Read More

【python】定时器、队列、线程池_cuican233的博客-多极客编程

定时器 在实际应用中,我们经常需要使用定时器去触发一些事件。Python中通过线程实现定时器timer,其使用非常简单 示例:使用定时器实现当前时间每秒循环输出一次 代码: import threading#导入线程类 import time#导入python中的time类 def run():#定义run方法,执行实际逻辑结构 print(time.strftime("%Y-%m-%d

Read More