Java ZGC 深度剖析及其在构建低延迟流系统中的实践心得
1.GC开始初始状态上图中为GC开始前Java堆的状态:共有3个区域,9个对象。所有新创建的对象初始颜色均为Remapped。2.标记阶段从GCRoots开始遍历,标记所有存活的对象每次GC之间的标记阶段轮流使用Marked0与Marked1,本次使用Marked0。GCRoots(例如,线程栈中引用的对象,静...
这些年背过的面试题——个人项目篇
方案优化过程方案1:每日一个滚动榜,当日汇聚(费时间)首先记录每天的排行榜和一个滚动榜,加分时同时写入这两个榜单,每日零点后跑工具将前几天数据累加写入当日滚动榜,该方案缺点是时间复杂度高,7天榜还好,只需要读过去6天数据,如果是100天榜,该方案需要读过去99天榜,显然不可接受。方案2:全局N个滚动榜同时写...
Java 中 ThreadPoolExecutor 线程池必备知识点:工作流程、常见...
提交一个任务到线程池时,线程池会创建一个新的线程来执行任务。注意:即使有空闲的基本线程能执行该任务,也会创建新的线程。如果线程池中的线程数已经大于或等于corePoolSize,则不会创建新的线程。如果调用了线程池的prestartAllCoreThreads()方法,线程池会提前创建并启动所有基本线程。maximumPoolSize(线程池的最...
Java线程池实现原理及其在美团业务中的实践
任务管理部分充当生产者的角色,当任务提交后,线程池会判断该任务后续的流转:(1)直接申请线程执行该任务;(2)缓冲到队列中等待线程执行;(3)拒绝该任务。线程管理部分是消费者,它们被统一维护在线程池内,根据任务请求进行线程的分配,当线程执行完任务后则会继续获取新的任务去执行,最终当线程获取不到任务的时候,线程...
原创Java8线程池总结
Java中创建线程主要有三种方式1、继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。
Java中23种设计模式的详细解析
行为型模式(11种):策略模式模板方法模式观察者模式迭代子模式责任链模式命令模式备忘录模式状态模式访问者模式中介者模式解释器模式其余两类模式:并发型模式线程池模式设计模式六大原则单一职责原则(SingleResponsibilityPrinciple)-这里的设计模式原则,主要讨论的是Java面向对象编程设计中设计原则,单一职责原则由于...
年要过,工作也要找!_澎湃号·政务_澎湃新闻-The Paper
2、精通jdbc、ssh、mysql、socket等,熟悉java开发框架,如SpringMVC,Hibernate等;3、熟悉分布式、多线程、异步处理、消息处理、搜索等中间件产品和工作机制;4、熟悉linux环境服务端开发;python开发工程师5人学历要求:本科及本科以上薪资:6000-10000元/月...