E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
线程池源码分析
手写
线程池
(简化版)
前言要想用好
线程池
,就得掌握其原理,所谓磨刀不误砍柴工,深入了解
线程池
的工作原理,对日常工作开发,最重要的是应付面试。
原来不是错觉
·
2024-02-07 11:36
java基础
java
面试
【并发编程】手写
线程池
&阻塞队列
个人主页:五敷有你系列专栏:并发编程⛺️稳重求进,晒太阳示意图步骤1:自定义任务队列变量定义用Deque双端队列来承接任务用ReentrantLock来做锁并声明两个条件变量ConditionfullWaitSetemptyWaitSet最后定义容量capcity方法:添加任务注意点:任务容量慢了用await每个添加都进行一个emptyWaitSet.signalAll唤醒沉睡的线程考虑万一死等的
五敷有你
·
2024-02-07 11:01
并发编程
java
服务器
并发编程
线程池
ConcurrentModificationException异常解决办法
将线程放到了
线程池
里面也出现了OOM,真的是让我有点不知所措,感觉自己对多线程这不会
李die喋
·
2024-02-07 11:41
freertos
源码分析
三 task 结构与几个链表
任务控制块taskControlBLock结构体,以下为部分typedefstructtskTaskControlBlock{volatileStackType_t*pxTopOfStack;//栈顶指针ListItem_txStateListItem;//任务状态表项ListItem_txEventListItem;//事件表项UBaseType_tuxPriority;//优先级StackTy
yvee
·
2024-02-07 10:20
链表
数据结构
freertos
源码分析
四 任务创建的简单分析
任务创建xTaskCreate为TCB和TCB栈分配空间,初始化,加入就绪任务链表#if(configSUPPORT_DYNAMIC_ALLOCATION==1)BaseType_txTaskCreate(TaskFunction_tpxTaskCode,constchar*constpcName,constconfigSTACK_DEPTH_TYPEusStackDepth,void*const
yvee
·
2024-02-07 10:17
嵌入式硬件
线程池
的实现原理以及使用
JAVA
线程池
的分析和使用引言合理利用
线程池
能带来三个好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁所造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
胖瘦馒头
·
2024-02-07 10:22
ConcurrentLinkedHashMap
源码分析
一、简介ConcurrentLinkedHashMap是google开源的线程安全的方便并发的Map,Map利用LRU缓存机制对Map中存储对象进行换入换出管理。采用两套资源控制机制,一套同步机制,使用ConcurrentMap对对象数据进行KV存储,保证多线程并发安全地调用Map资源,而对于存储对象的换入换出管理则采用异步机制,使用Queuebuffer存储每次的因对象读写而产生的对象换入换出任
lim快乐_无限
·
2024-02-07 09:15
Flink执行流程与
源码分析
(面试必问,建议收藏)
Flink主要组件作业管理器(JobManager)(1)控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的Jobmanager所控制执行(2)Jobmanager会先接收到要执行的应用程序,这个应用程序会包括:作业图(JobGraph)、逻辑数据流图(ogicaldataflowgraph)和打包了所有的类、库和其它资源的JAR包。(3)Jobmanager会把Jobgraph
大数据左右手
·
2024-02-07 09:04
Flink
大数据
flink
【单例 & 定长 & 优先 & 动态
线程池
】 ( C++11 | 拒绝策略 | 动态任务分配 | 单例设计模式 )
目录简介概念优点实现思路1.初始化
线程池
2.
线程池
工作流程3.任务执行4.线程生命周期管理5.关闭
线程池
IncludeCV&enums内嵌类定义私有成员属性私有辅助函数静态成员类外初始化测试函数完整代码简介概念
线程池
XNB's Not a Beginner
·
2024-02-07 08:29
ADT数据结构实现
语言特性
Modern
Cpp
c++
设计模式
数据结构
后端
架构
线程池
-一个很有意思的话题
文章目录前言我感觉很合理的描述(可以尝试看看)一、思想数据库连接池:HTTP连接池:对象池:Session池:二、代码case有点多
线程池
池的种类:以及创建方式重点来喽:自定义
线程池
:j工作中必用核心参数代码实现可以运行的
苏汀star
·
2024-02-07 08:23
java
三级?是缓存不是片! spring的三级缓存---学习spring框架第一步
二、是怎么解决的三、反思总结
源码分析
:DefaultSingletonBeanRegistry类getSingleton方法三级缓存的作用反思总结面试点:1、三级缓存原理:如上2、二级缓存就可以解决了为什么还要有三级缓存为什么需要早期引用
苏汀star
·
2024-02-07 08:17
框架
spring
学习
java
面试
nginx upstream server主动健康检测模块ngx_http_upstream_check_module 使用和
源码分析
(中)
目录6.
源码分析
6.1解析指令分析6.2待检查的服务器的添加和状态查询6.3本模块的进程初始化函数6.4准备执行健康检测任务6.5执行健康检测任务本篇对ngx_http_upstream_check_module
码农心语
·
2024-02-07 07:53
高性能
nginx学习
LINUX
nginx
http
运维
健康检测
tengine
源码分析
nginx upstream server主动健康检测模块ngx_http_upstream_check_module 使用和
源码分析
(下)
目录7.实现一个UDP健康检测功能7.1功能定义7.2定义一个新的健康检测类型7.3增加udp特定的健康检测需要的配置指令7.3.1ngx_http_upstream_check_srv_conf_s结构体的扩展7.3.2check_udp_send的实现7.3.3check_udp_expect的实现7.3.416进制解码代码的实现7.4ngx_http_upstream_check函数的修改7
码农心语
·
2024-02-07 07:50
nginx学习
LINUX
c++开发
nginx
http
udp
健康检测
upstream
tengine
源码实现
Android 多线程之判断线程结束
没有解决问题的方案1.
线程池
然后shutdown然后判断是否terminate,如果terminate返回为true,
云里雾花
·
2024-02-07 07:38
Linux
线程池
简易实现
一ThreadPool.hpp#pragmaonce#include#include#include#include#include#includeusingnamespacestd;structThreadInfo{pthread_ttid;stringthreadName;};staticconstintnum=5;templateclassThreadPool{private:voidLoc
乄北城以北乀
·
2024-02-07 06:15
Linux
is
not
unix
--
系统
linux
Golang context 万字解析实现原理
Golang:context基于go1.21版本Context是什么Context的功能应用场景
源码分析
1.10Context核心结构1.1Err错误2.1emptyCtx3.1Background()
Go 的学习之路
·
2024-02-07 04:02
golang
服务器
linux
RocketMQ
源码分析
(四)消息的发送
消息发送的主要步骤为:验证消息,查找路由,消息发送(包含异常机制处理)我们以DefaultMQProducer#send为切入口:以下代码为验证消息publicSendResultsend(Messagemsg)throwsMQClientException,RemotingException,MQBrokerException,InterruptedException{//校验消息(主要是长度是
甘_
·
2024-02-07 04:01
Linux线程/同步与互斥/锁/悲观锁/乐观锁/读写锁/简单
线程池
/生产者消费者模型/单例模式饿汉方式懒汉方式
线程概念线程是进程内的一个执行分支,线程的执行粒度比进程要细。在Linux眼中,看到的PCB比传统的进程更加轻量化,所以也叫做轻量化进程。现在我们对于进程的定义就是一堆执行流+进程地址空间+页表这些+在物理内存中的代码和数据。所以线程就是多创建出来的task_struct结构体。或者我们直接把第一个叫做主线程,其他的都叫做新线程。不同的操作系统对于线程的概念是一样的,但是它们的实现方案可能不一样。
老汉忒cpp
·
2024-02-07 04:20
linux
运维
服务器
muduo-net
源码分析
(七)——TcpServer 和 TcpConnection(二)
先序这一节我们将继续完善TcpServer和TCPConnection类,并且解决上一节思考的问题【一定要理清思路】;TcpServer
源码分析
重要的变量ConnectionCallbackconnectionCallback
cyjiayou
·
2024-02-07 03:02
muduo源码分析
c++
Java Character源码剖析
下面结合
源码分析
Character的贡献。Unicode也许你没听过Unicode,但应该见过UTF-8。
洒水水儿
·
2024-02-07 02:54
Java常用类的源码剖析
java
开发语言
并发编程之:深入解析
线程池
本期带来
线程池
的第二期内容,如果对
线程池
的基本概念还不是很清楚,可以先看我上一篇文章。
小黑说Java
·
2024-02-07 02:48
python并发编程这一篇就够了
多线程示例:注意我这里是使用的
线程池
importconcurrent.futuresimportthread
卫玠_juncheng
·
2024-02-07 02:05
python
libevent
源码分析
(2)--2.1.8--结构体 struct event和struct event_callback
一、event_callback结构体structevent_callback{//下一个回调事件TAILQ_ENTRY(event_callback)evcb_active_next;//回调事件的状态标识,具体为://#defineEVLIST_TIMEOUT0x01//event在time堆中,min_heap//#defineEVLIST_INSERTED0x02//event在已注册事件
录事参军
·
2024-02-07 01:18
libevent
libevent
libevent
Libevent
源码分析
-----与event相关的一些函数和操作
Libevent提供了一些与event相关的操作函数和操作。本文就重点讲一下这方面的源代码。在Libevent中,无论是event还是event_base,都是使用指针而不会使用变量。实际上,如果查看Libevent不同的版本,就可以发现event和event_base这两个结构体的成员是不同的。对比libevent-2.0.21-stable和libevent-1.4.13-stable这两个版
amoscykl
·
2024-02-07 01:48
Libevent
Libevent
libevent
Libevent
源码分析
-----信号event的处理
信号event的工作原理:前面讲解了Libevent如何监听一个IO事件,现在来讲一下Libevent如何监听信号。Libevent对于信号的处理是采用统一事件源的方式。简单地说,就是把信号也转换成IO事件,集成到Libevent中。统一事件源的工作原理如下:假如用户要监听SIGINT信号,那么在实现的内部就对SIGINT这个信号设置捕抓函数。此外,在实现的内部还要建立一条管道(pipe),并把这
amoscykl
·
2024-02-07 01:47
Libevent
Libevent
libevent
Libevent
源码分析
-----超时event的处理
如何成为超时event:Libevent允许创建一个超时event,使用evtimer_new宏。//event.h文件#defineevtimer_new(b,cb,arg)event_new((b),-1,0,(cb),(arg)) 从宏的实现来看,它一样是用到了一般的event_new,并且不使用任何的文件描述符。从超时event宏的实现来看,无论是evtimer创建的event还是一般ev
amoscykl
·
2024-02-07 01:47
Libevent
Libevent
libevent
Libevent
源码分析
-event_base
event_base数据结构初始化event_base相关接口前面介绍了event,本节介绍Reactor的核心结构:event_base,它在event-internal.h中。event_base是整个libevent的核心,它持有所有注册的事件,并负责通知激活的事件。event_base数据结构structevent_base{conststructeventop*evsel;void*ev
KangRoger
·
2024-02-07 01:16
Libevent
libevent
event-base
reactor
Spring面试大全@Async使用02
@Async的使用在SpringBoot项目中创建application.yml配置文件#配置
线程池
threadPoolTaskExecutor:corePoolSize:10#核心线程数(默认线程数)
SuperLBY
·
2024-02-06 23:12
#
Spring面试
spring
面试
java
MyBatis的二级缓存以及装饰器模式运用
目录Mybatis中如何配置二级缓存基于注解配置缓存基于XML配置缓存Cache解析处理过程Cache支持的过期策略缓存的基本实现装饰器模式Mybatis缓存实现
源码分析
BlockingCacheLRU
陈脩
·
2024-02-06 21:08
iBatis
装饰器模式
java
缓存
eureka
开发语言
项目-HTTP服务器+Reactor模型
HTTP服务器+Reactor模型一、HTTP服务器1.概念二、Reactor模型1.概念2.分类单Reactor单线程:单I/O多路复用+业务处理单Reactor多线程:单I/O多路复用+
线程池
(业务处理
hu_yuchen
·
2024-02-06 20:52
one
thread
one
loop式并发服务器实现
http
服务器
网络协议
JUC AQS ReentrantLock
源码分析
(一)
Java的内置锁一直都是备受争议的,在JDK1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷性的隐式获取锁释放锁机制(基于JVM机制),但是它却缺少了获取锁与释放锁的可操作性,可中断、超时获取锁,且它为独占式在高并发场景下性能大打折扣。如
程序员Yamy
·
2024-02-06 19:13
C++多线程编程:解锁性能与并发的奥秘
通过本文,我们深入了解了C++中的多线程编程,探讨了创建线程、数据同步、原子操作、同步和通信、异步任务与Future/Promise、性能优化与
线程池
等主题。
白日梦批发商
·
2024-02-06 17:18
c++
java
jvm
springboot2.x基础教程:@Async开启异步任务
通常我们需要自己定义一个
线程池
,开启一个线程任务。
程序员众推
·
2024-02-06 16:33
[k8s
源码分析
][client-go] workqueue
1.前言转载请说明原文出处,尊重他人劳动成果!源码位置:https://github.com/nicktming/client-go/tree/tming-v13.0/util/workqueue分支:tming-v13.0(基于v13.0版本)本文将分析util包中的workqueue.在各类controller中经常会使用该workqueue中的一些类.architecture.png2.qu
nicktming
·
2024-02-06 15:10
nginx upstream server主动健康检测模块ngx_http_upstream_check_module 使用和
源码分析
(上)
2.1check2.2check_keepalive_requests2.3check_http_send2.4check_http_expect_alive2.5check_shm_size2.6check_status3.加载健康检测模块3.1模块的编译3.2模块的配置4.测试验证5.思考与问题6.
源码分析
码农心语
·
2024-02-06 14:27
nginx学习
nginx
http
运维
健康检测
主动
upstream
关于:程序中threadName:pool-4637-thread-4是什么意思?问题
描述:在一次使用
线程池
过程中,服务器日志出现pool-4637-thread-4。心生疑问,网上也有人提出疑问。
Mercury_@22
·
2024-02-06 14:15
线程池
线程池问题
Singleton 单例模式
同时确保只有唯一的对象被创建同时该类对外提供访问该唯一实例的方式,外界不能重复创建,取用即可实际意义全局只需要该类的唯一对象即可,节省系统资源内存开销案例:一个公司只需一个老板;创建的一个对象需要消耗太多资源,如与数据库连接在计算机系统中,
线程池
当当一丢丢
·
2024-02-06 13:46
Linux中
线程池
及gdb调试多线程
线程池
的概念概念:通俗的讲就是一个线程的池子,可以循环的完成任务的一组线程集合必要性:我们平时创建一个线程,完成某一个任务,等待线程的退出。
程序猿莫悔
·
2024-02-06 12:58
linux
运维
服务器
设计模式之原型模式
克隆羊问题1.1传统方式解决克隆羊问题1.2代码1.3传统方式的缺点二、原型模式2.1原型模式基本介绍2.2原型模式原理结构uml类图2.3原型模式解决克隆羊问题的应用实例2.4原型模式在Spring框架中
源码分析
三
咱老李
·
2024-02-06 11:41
设计模式
设计模式
原型设计模式
深克隆
浅克隆
编码规范
MySQL(二)(进阶篇)
在该层上引入了
线程池
的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全
xxxxxxxpp
·
2024-02-06 11:05
MySQL
mysql
数据库
Spring框架AOP
源码分析
(二)
AOP编程使用1.注解版本实现AOP开启事物注解权限@Aspect指定一个类为切面类@Pointcut("execution(*com.itmayiedu.service.UserService.add(..))")指定切入点表达式@Before("pointCut_()")前置通知:目标方法之前执行@After("pointCut_()")后置通知:目标方法之后执行(始终执行)@AfterRet
Mark_ZSQ
·
2024-02-06 10:18
Redis中的Reactor模型和执行命令源码探索
文章目录摘要1、了解Linux的epoll2、了解Reactor模型一、Redis初始化1.1、配置初始化1.2、服务初始化1.3、网络监听初始化1.4、Reactor
线程池
初始化1.5、Reactor
pigfu
·
2024-02-06 10:46
Redis
redis
缓存
ScheduledExecutorService在spring中实现动态启停、修改间隔时间的功能
ScheduledExecutorService的主要作用就是可以将定时任务与
线程池
功能结合使用下面是一个简单的例子,功能就是每隔1秒中执行一下run里面的方法publicclassScheduledExecutorServiceTest
专业的程序员
·
2024-02-06 10:33
JAVA
Spring
IT不归撸
spring
定时任务
实时修改
多线程进阶(下篇)---Callable 接口、JUC(java.util.concurrent) 的常见类、
线程池
、线程安全的集合类、死锁、其他常见面试题
目录一、Callable接口1.Callable的用法2.相关面试题二、JUC(java.util.concurrent)的常见类1.ReentrantLock2.原子类三、
线程池
1.ThreadPoolExecutor2
小枫 ~
·
2024-02-06 10:44
EE初阶
java
jvm
面试
java-ee
深入理解 Java
线程池
深入理解Java
线程池
1.概述
线程池
是多线程编程中一种重要的并发机制,它能够管理和复用线程,提高程序的性能和稳定性。
hymua
·
2024-02-06 10:13
java
开发语言
RTthread线程间通信(邮箱,消息队列,信号/软件中断)---03信号(软件中断)
源码分析
信号实际使用看这一个#ifdefined(RT_USING_SIGNALS)rt_sigset_tsig_pending;/**sig_vectors==RT_NULL){//这一个线程之前没有安转过rt_thread_alloc_sig(tid);}if(tid->sig_vectors){old=tid->sig_vectors[signo];if(handler==SIG_IGN)tid->
唐·柯里昂798
·
2024-02-06 09:15
网络
物联网
笔记
单片机
stm32
51单片机
mcu
netty-websocket扩展协议及token鉴权补充
文章源码:gitee源码部分可以看上一篇文章中的
源码分析
netty-websocket鉴权token及统一请求和响应头(鉴权控制器)最近刚好没事,看到有朋友说自定义协议好搞,我就想了想,发现上面那种方式实现确实麻烦
离别又见离别
·
2024-02-06 08:12
java排坑之路
websocket
lua
网络协议
c++之std::unique_lock, std::lock, std::scoped_lock及std::condition_variable
可用的第二个参数有三种,而lock_guard只有一种unique_lock的析构需要判断_M_owns,而lock_guard无需判定条件变量的传参为unique_lock说什么都不如源码来的简单明了1.1
源码分析
liuge
·
2024-02-06 08:12
c++学习
c++
开发语言
后端
xv6(RISC-V)操作系统
源码分析
第六节——锁
一、程序并发执行带来的问题及解决方案(一)并发执行带来的问题程序的并发执行提高了程序执行的效率,这是大多数内核所追求的,xv6也是这样。xv6采用两种方式实现程序的并发执行:采用多处理器架构在一个CPU上实现多线程机制xv6采用多处理器架构(硬件系统具有多个CPU独立执行)来实现程序的并发执行。这些CPU共享同一个DRAM,这种共享就带了问题:一个CPU在读取一个数据的同时,另一个CPU正在更新它
MCQSLW
·
2024-02-06 08:05
risc-v
unix
汇编
c语言
xv6(RISC-V)操作系统
源码分析
第一节——操作系统接口
一、内核与进程xv6使用传统形式内核(一个向其他运行中的程序提供服务的特殊程序)。每一个正在运行的程序称为进程,进程拥有自己的指令、数据与栈的内存空间。它们的功能如下:指令:实现程序的运算数据:用于运算过程的变量栈:管理程序的过程调用一个计算机通常有许多进程,但只有一个内核。二、进程调用内核服务的方式——系统调用进程通过调用系统调用来调用内核的服务。系统调用是操作系统接口中的一个调用。系统调用会进
MCQSLW
·
2024-02-06 08:34
risc-v
unix
汇编
vscode
c语言
上一页
6
7
8
9
10
11
12
13
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他