首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏mall学习教程

    动态线程,香啊!

    ,也有 CPU 密集型的,但线程的参数并不好确定;需要有套机制在运行过程中动态去调整参数 「无感知性」:线程运行过程中的各项指标一般感知不到;需要有套监控报警机制在事前、事中就能让开发人员感知到线程的运行状况 接入只需简单 4 步就可完成,顺利 3 分钟搞定 「高可扩展」:框架核心功能都提供 SPI 接口供用户自定义个性化实现(配置中心、配置文件解析、通知告警、监控数据采集、任务包装等等) 「线上大规模应用」:参考线程实践 ,内部已经有该理论成熟的应用经验 「多平台通知报警」:提供多种报警维度(配置变更通知、活性报警、容量阈值报警、拒绝触发报警、任务执行或等待超时报警),已支持企业微信、钉钉、飞书、邮件报警,同时提供 服务内部线程管理模块 1.服务启动时从配置中心拉取配置,生成线程实例注册到内部线程注册中心以及 Spring 容器中 2.接受配置监听模块的刷新事件,实现线程参数的刷新 3.代码中通过依赖注入 (推荐)或者 DtpRegistry.getDtpExecutor() 方法根据线程名称来获取线程实例 三方组件线程管理 1.服务启动获取第三方中间件的线程,被框架管理起来 2.接受参数刷新、指标收集

    77810编辑于 2023-02-27
  • 来自专栏捡田螺的小男孩

    动态线程,香啊!

    ,也有 CPU 密集型的,但线程的参数并不好确定;需要有套机制在运行过程中动态去调整参数 「无感知性」:线程运行过程中的各项指标一般感知不到;需要有套监控报警机制在事前、事中就能让开发人员感知到线程的运行状况 接入只需简单 4 步就可完成,顺利 3 分钟搞定 「高可扩展」:框架核心功能都提供 SPI 接口供用户自定义个性化实现(配置中心、配置文件解析、通知告警、监控数据采集、任务包装等等) 「线上大规模应用」:参考线程实践 ,内部已经有该理论成熟的应用经验 「多平台通知报警」:提供多种报警维度(配置变更通知、活性报警、容量阈值报警、拒绝触发报警、任务执行或等待超时报警),已支持企业微信、钉钉、飞书、邮件报警,同时提供 服务内部线程管理模块 1.服务启动时从配置中心拉取配置,生成线程实例注册到内部线程注册中心以及 Spring 容器中 2.接受配置监听模块的刷新事件,实现线程参数的刷新 3.代码中通过依赖注入 (推荐)或者 DtpRegistry.getDtpExecutor() 方法根据线程名称来获取线程实例 三方组件线程管理 1.服务启动获取第三方中间件的线程,被框架管理起来 2.接受参数刷新、指标收集

    88830编辑于 2023-02-24
  • 来自专栏动态线程池(DynamicTp)

    动态线程实践思路,开源了

    如果你对ThreadPoolExecutor不是很熟悉,推荐阅读下面两篇文章 javadoop: https://www.javadoop.com/post/java-thread-pool 技术博客 但线程的参数并不好确定;需要有套机制在运行过程中动态去调整参数 无感知性,线程运行过程中的各项指标一般感知不到;需要有套监控报警机制在事前、事中就能让开发人员感知到线程的运行状况,及时处理 高可用性 报警维度包括(队列容量、线程活性、拒绝触发等);同时也会定时采集线程指标数据供监控平台可视化使用。使我们能时刻感知到线程的负载,根据情况及时调整,避免出现问题影响线上业务。 | |___/ |_| :: Dynamic Thread Pool :: 特性 参考线程实践 ,生成线程实例注册到内部线程注册中心中 2.监听模块监听到配置变更时,将变更信息传递给管理模块,实现线程参数的刷新 3.代码中通过getExecutor()方法根据线程名称来获取线程对象实例

    2K52编辑于 2022-08-17
  • 来自专栏龙台的技术笔记

    :某动态线程框架是官方开源的么?

    最近,有很多同学在微信上问我这么一个问题: Hippo4j 动态线程框架是开源的么? 类似于这样的问题还挺多,在这里统一回复下: 官方并没有开源任何关于动态线程的框架。 官方关于对动态线程框架的唯一产出,来自于大家基本上看过或者有印象的一篇博客。 Java线程实现原理及其在业务中的实践 如果不了解动态线程概念的同学可以深入了解下。 动态线程框架为什么没有开源 根据我的想法,如果当初推出动态线程概念后,顺势推出一款开源框架,肯定会“爆火”。 毕竟,对于工作这么多年的开发来说,谁的线上环境还没有被线程“坑”过呢。 通过上面提到的动态线程文章可知,在线程变更通知和过载告警功能上,依赖了办公通信软件大象。 如果要开源,如何进行改造呢? 动态线程是监控体系中的“小”模块 之前有和美的一位技术朋友沟通过,为什么的动态线程框架没有开源出来? 他给我的回复是,动态线程框架只是监控体系下一个“小”模块。

    1.3K00编辑于 2023-03-20
  • 来自专栏动态线程池(DynamicTp)

    动态线程实践思路开源项目(DynamicTp),线程源码解析及通知告警篇

    gitee地址:https://gitee.com/yanhom/dynamic-tp github地址:https://github.com/lyh200/dynamic-tp *** 系列文章 动态线程实践思路 ,开源了 动态线程框架(DynamicTp),监控及源码解析篇 动态线程(DynamicTp),动态调整Tomcat、Jetty、Undertow线程参数篇 *** 线程解读 [581d7521b3b7493f8ea9d540ef40c3e6 ,且定义了一套线程的生命周期状态,用一个ctl变量来同时保存当前状态(高3位)和当前线程数(低29位)。 核心线程 < 当前线程数 < 最大线程数,且任务队列已满,则创建新的线程执行提交的任务 5.如果当前线程数 > 最大线程数,且队列已满,则拒绝该任务 addWorker()方法逻辑 private // 2.如果线程状态 = SHUTDOWN,并且firstTask不为null则直接返回false,因为SHUTDOWN状态的线程不能在接受新任务,否则3 // 3.如果线程状态

    1.6K71编辑于 2022-08-17
  • 来自专栏动态线程池(DynamicTp)

    动态线程思路框架(DynamicTp)之动态调整Tomcat、Jetty、Undertow线程参数篇

    大家好,这篇文章我们来介绍下动态线程框架(DynamicTp)的adapter模块,上篇文章也大概介绍过了,该模块主要是用来适配一些第三方组件的线程管理,让第三方组件内置的线程也能享受到动态参数调整 gitee地址:https://gitee.com/yanhom/dynamic-tp github地址:https://github.com/lyh200/dynamic-tp *** 系列文章 动态线程实践思路 要想去管理第三方组件的线程,首先肯定要对这些组件有一定的熟悉度,了解整个请求的一个处理过程,找到对应处理请求的线程,这些线程不一定是JUC包下的ThreadPoolExecutor类,也可能是组件自己实现的线程 #execute()方法的执行流程 1.判断如果当前线程数小于核心线程,则新建一个线程来处理提交的任务2.如果当前线程数大于核心线程数且队列没满,则将任务放入任务队列等待执行 3.如果当前当前线程数大于核心线程 JUC线程的执行流程,改写后Tomcat线程执行流程如下: 1.判断如果当前线程数小于核心线程,则新建一个线程来处理提交的任务 2.如果当前当前线程数大于核心线程,小于最大线程数,则创建新的线程执行提交的任务

    1.8K61编辑于 2022-08-17
  • 来自专栏Android进阶编程

    Java线程实现原理及其在业务中的实践

    本文开篇简述线程概念和用途,接着结合线程的源码,帮助读者领略线程的设计思路,最后回归实践,通过案例讲述使用线程遇到的问题,并给出了一种动态化线程解决方案。 接下来,我们会按照以下三个部分去详细讲解线程运行机制: 线程如何维护自身状态。 线程如何管理任务。 线程如何管理线程。 通过阅读线程源代码也可以发现,经常出现要同时判断线程运行状态和线程数量的情况。线程也提供了若干方法去供用户获得线程当前的运行状态、线程个数。 在Java线程留有高扩展性的基础上,封装线程,允许线程监听同步外部的消息,根据消息进行修改配置。将线程的配置放置在平台侧,允许开发同学简单的查看、修改线程配置。 负载告警:线程队列任务积压到一定值的时候会通过大象(内部通讯工具)告知应用开发负责人;当线程负载数达到一定阈值的时候会通过大象告知应用开发负责人。

    1.3K20发布于 2020-12-16
  • 来自专栏动态线程池(DynamicTp)

    动态线程思路框架(DynamicTp),监控及源码解析篇

    大家好,动态线程项目DynamicTp开源一个多月,目前400多star,说明还是比较受欢迎的,现在已经有一些小伙伴在接入使用或者即将接入使用了,为了项目以后更好的发展迭代,打算出几篇文章来对DynamicTp 背景啥的可以看前一篇文章介绍 动态线程实践思路,开源了 *** 项目地址 感谢star,欢迎pr,业务之余给开源贡献一份力量 gitee地址:https://gitee.com/yanhom/dynamic-tp SpringBoot内置的三大web容器(Tomcat、Jetty、Undertow)的线程管理,后续可能接入其他常用组件的线程管理。 2.afterPropertiesSet方法会拉去配置中心配置的线程然后实例化 刷新 配置中心的listener监听到配置文件的变动后,解析配置文件,然后通知DtpRegistry去更新线程配置, 具体使用步骤上篇文章有讲,可以去看 动态线程实践思路,开源了 这个项目我觉得最大的优点也就是轻量,因为各个公司使用的组件体系都可能不太一样,所以留有足够多的扩展点让自己来扩展。

    6.2K123编辑于 2022-08-17
  • 来自专栏龙台的技术笔记

    的动态线程,不依赖中间件可以实现么?

    线程文章 介绍中,因为业务对线程参数没有合理配置,触发过几起生产事故,进而引发了一系列思考。 最终决定封装线程动态参数调整,扩展线程监控以及消息报警等功能 在开源平台找了挺多动态线程项目,从功能性以及健壮性而言,个人感觉不满足企业级应用 因为对动态线程比较感兴趣,加上想写一个有意义的项目 线程在业务系统应该都有使用到,帮助业务流程提升效率以及管理线程,多数场景应用于大量的异步任务处理 虽然线程提供了我们许多便利,但也并非尽善尽,比如下面这些问题就无法很好解决 [image-20211023160830084 应用系统中线程并不容易管理。参考的设计,Hippo 按照租户、项目、线程的维度划分。 目前动态线程功能已经完成,可以直接把代码拉到本地运行。

    83400发布于 2021-10-26
  • 来自专栏孟永辉

    ,正在改造

    正在告别,将目光投向了全新的发展战局之中。对于来讲,这是一个新的开始,这同样是一次顺势而为。因为只有这样,才会和那些曾经和它一起成长起来的玩家们一道共赴一个全新的发展新纪元。 一 以往我们所认识的,更多地是和外卖一词联系在一起的,提及,在很多情况下,便会提及「外卖」的字眼。这是由本身的发展历程所决定的。 以往,提及,我们看到的更多的是,它在流量的获取上,规模的做大上所做的诸多动作,比如,与大众点评的合并;比如,收购摩拜单车等,都是这一现象的直接体现;现在,提及,沃恩看到的更多的是,它在科技研发上的投入 从今年以来的表现来看,我们同样可以非常明显地感受到,与科技之间的连接同样是越来越强了,科技给带来的改变越来越多了,科技让开始有了更多的想象空间。 结语 透过的财报,我们可以非常明显地感受到,在这条路上走得愈发坚定。这样一条路,便是开始告别以往的自己,投身到新科技的星辰大海之中。

    70120编辑于 2022-06-05
  • 来自专栏王磊的博客

    面试:如何实现线程任务编排?

    FutureTask,并将Callable任务包装起来 FutureTask<Integer> futureTask = new FutureTask<>(task); // 创建线程 ExecutorService executor = Executors.newCachedThreadPool(); // 提交FutureTask给线程执行 然后将 FutureTask 提交给线程执行,最后通过 get() 方法获取任务的执行结果,之后才会执行后续流程。我们可以通过 get() 方法阻塞等待程序执行结果,从而完成线程任务的简单编排。 finalResult = task4.join(); System.out.println(finalResult); } } 课后思考 使用 CompletableFuture 需要配合线程一起使用吗 CompletableFuture 默认的线程是如何实现的

    35310编辑于 2024-05-17
  • 来自专栏刘旷专栏

    围魏救赵

    近日,有报道称APP正在内测短视频功能,并且还测试了编辑工具“皮皮虾”。此次测试可以看做是进军短视频领域的重要信号,而的入局或将在短视频领域掀起新波澜。 短视频“真香” 正如在广告片中的广告词“,美好生活小帮手”所言,对自身的准确定位在于生活服务。 此次短视频功能的推出,既能对自身的生态进行扩容,也能助推进行业务场景拓展。倘若短视频功能发展顺利,或将在未来成为重要的变现途径之一。 从市场份额来看,是当之无愧的外卖领域领跑者。 但此次抖音推出的“心动外卖”将会对产生一定的冲击。一方面是抖音拥有超过6亿的日活跃用户,可以说是手握巨大的流量。 最后,的新业务也不占优。据发布的财报显示,第四季度的营收为379.2亿元,同比增长了34.7%;新业务和其他业务经营亏损为60.03亿元,其中有一半的亏损来自优选。

    66830发布于 2021-08-16
  • 来自专栏服务端技术杂谈

    老话集

    在这篇文章中说要介绍下老话。 参见: 2022年度书单之《长期有耐心》《亚马逊逆向工作法》 今天介绍一些看似简单,但威力无穷的老话。 如今,“我不会,但我可以学”变成了一句老话,在耳熟能详。 未来唯一持久的优势,是有能力比你的竞争对手学的更快。 苦练基本功、标杆学习、长线思考、结构化思考、建设性反馈,是内部的5个最重要的人才成长方法论。 建设性反馈 建设性反馈经常出现在的日常管理、述职晋升等场景中,帮助大家更好的成长。 在技术上有非常强的前瞻性,基础技术高度统一,java是主要语言,这给公司的稳定性、扩展性、持续建设、不重复造轮子提供了非常好的基础。

    2.5K20编辑于 2023-03-22
  • 来自专栏Python爬虫与数据分析

    关于登录

    今天给大家说说的登录吧。 ? 以后再也不会有代码了,只会给大家说思路,以及怎么去搞。应该就够了,毕竟实现是挺简单的。 当然了,大佬绕道! 的登录估计好多人都分析过了。

    1.4K40发布于 2019-07-30
  • 来自专栏向治洪

    仿下拉

    git 下载地址:https://github.com/nugongshou110/MeiTuanRefreshListView 实现原理: 的下拉刷新分为三个状态:  第一个状态为下拉刷新状态( 我们的思路是:当前这个椭圆形有一个进度值,这个进度值从0变为1,然后对这个椭圆形进行缩放,我们可以使用自定义View来实现这个效果,我们先来用一个SeekBar来模仿一下下拉距离的进度  我们解压

    1.7K70发布于 2018-02-01
  • 来自专栏用户6132544的专栏

    再现高增长

    的营收之所以能够实现稳健增长,主要得益于其旗下各项业务的良好表现。 作为的基本盘,外卖业务的“创收能力”依旧强悍。 可以说“增收不增利”,是2021年第一季度财报的真实写照。 而之所以“不增利”,主要是受“新业务”的拖累。财报显示,新业务经营净亏损高达80.44亿元,同比暴增489.9%。 可见,在社区购上“战略性亏损”,已经得到了实际回报。 还需长期努力 经过多年发展,已经在互联网大厂中占据了举足轻重的地位。对于而言,能在短时间内就取得如此成就实属不易。 比如,的市占率虽远大于饿了么,但其活跃用户数却稍逊一筹。而随着外卖用户规模逐渐接近天花板,也面临着增长的困境,加之市占率的增长幅度日渐变缓,饿了么等其他玩家的威胁也在与日俱增。 在出行业务上,内外承压。

    60020发布于 2021-06-02
  • 来自专栏JavaGuide

    上岸、华为、字节!

    今天来分享一位球友的 2022 春招面经,拿到了、字节、华为等公司的 offer。面经中涵盖的问题,我几乎都找到了对应的参考答案,希望可以帮助到你。 一面 挖项目,问的太多了,这里就不一一列举了,大部分是某个功能是怎么实现的或者如果要加某个功能应该怎么实现。 进程线程区别。 死锁,死锁条件。 知不知道中断和轮询的区别。 线程通信方式。 Volitate关键字。 Java 高效拷贝数组。 算法题 跳跃游戏 leetcode 55。

    83641编辑于 2022-05-25
  • 来自专栏孟永辉

    亏损,转型在即

    「每送一单,亏一块钱」,这是我在财报发布之后看到的最多的说辞。同样地,这句说辞也引发了我的有关思考。既然一直在亏损,那么,还在做什么。 站在这样的时间档口,我们或许应该更多地去思考在做什么,以及究竟应该做什么。 一 一直以来,我们对于的印象,就是一个外卖平台。 同几乎所有的互联网公司一样,在站稳了脚跟之后,开始了规模化发展的步伐。无论是打车,抑或是单车,甚至是优选,几乎都是这一逻辑的直接体现。 尽管并未经历上述公司那样的遭遇,但是,我们依然要看到的是,正在做的这种以规模和效率为主导的发展模式具备的弊端。财报的亏损状态,正是这一现象的直接体现。 这才是真正要解决的问题,这才是真正要着力去做的事情。 前段时间,我看到了利用无人机来进行外卖配送的尝试。不得不说,这是一种好的迹象。

    30020编辑于 2022-04-02
  • 来自专栏Linyb极客之路

    2016面试经历

    java中的"final"关键字在多线程的语义中,有什么含义 说说nio的架构,为什么变快了,说说select和buffer都是怎么用的? 在操作系统中的实现原理? 每个线程只有一个栈吗? 栈空间的内部结构是怎么样的? 堆内存为什么要设计为分代? ArrayList的实现原理,如何测试ArrayList动态分配内存中带来的内存、cpu变化 ArrayList是不是线程安全的? 怎么实现线程安全的? nginx是多线程还是单线程? linux中如何监控和查看内存、cpu情况? 负载分为哪些类别和层次?你们项目中是怎么用的? mq是如何使用的? http协议建立连接的过程是怎么样的?

    85180发布于 2018-03-27
  • 来自专栏小林coding

    到家面试,过了!

    今天分享Java后端面经,考察的范围还挺多的,计算机基础+mysql+redis+mq+java并发+java 集合+jvm这些方面都进行盘问了。 持有并等待条件:持有并等待条件是指,当线程 A 已经持有了资源 1,又想申请资源 2,而资源 2 已经被线程 C 持有了,所以线程 A 就会处于等待状态,但是线程 A 在等待资源 2 的同时并不会释放自己已经持有的资源 不可剥夺条件:不可剥夺条件是指,当线程已经持有了资源 ,在自己使用完之前不能被其他线程获取,线程 B 如果也想使用此资源,则只能在线程 A 使用完并释放后才能获取。 线程 A 和 线程 B 获取资源的顺序要一样,当线程 A 是先尝试获取资源 A,然后尝试获取资源 B 的时候,线程 B 同样也是先尝试获取资源 A,然后尝试获取资源 B。 在首次构建这个对象时,JVM拿字面量"abc"去字符串常量试图获取其对应String对象的引用。

    44211编辑于 2023-12-01
领券