浅析AbstractQueuedSynchronizer
最近算是闲来无事,再者就是,很早之前
在AQS的概念和设计层面-浅浅的挖呀挖呀挖
AQS,全称 Abstract Queued Synchronizer,是一个抽象的队列同步器,通过维护一个共享资源状态( Volatile Int State )和一个先进先出( FIFO )的线程等待队列来实现一个多线程访问共享资源的同步框架。
IO密集型服务提升性能的三种方法
在面对IO密集型系统性能优化时,我们可以通过三种主要的方式来进行:批处理、缓存和多线程。这三种方式各有其优点和适用场景。
HikariPool一直报连接不可用
前言一开始发现测试环境报错,原先配置6现在配置20依然还是很频繁的报错,想看下底层到底如何处理的导致这个问题,到底什么情况。
ThreadPoolExecutor的submit正确的使用方式
项目场景:线程池的地方用的还是挺多的,一般来说用的多的还是execute方法,submit方法还是用的挺少的,一般ThreadPoolExecutor 的 submit 方法通常用于将一个任务提交到线程池中执行。这个方法会返回一个 Future 对象,可以用来检查任务的执行状态,获取任务的返
从CPU的视角看 多线程代码为什么那么难写!
现代CPU的本质其实也是一个分布式系统,很多时候仍需要编程者手动去解决数据不一致性的问题
Java语言
Java的线程
本篇文章介绍了1. Java的线程生命周期;2. Java的线程状态切换;3. Java线程API的使用。
腾讯面试:如何优雅停止一个正在运行的线程?
前言停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要使用。虽然它可以达到停止线程的目的,但是这个方法是不安全的,已被废弃。
一文带你彻底理解同步和锁的本质
为了更好地从底层原理去了解锁的机制,形成体系化的知识,这篇文章我会从进程间通信底层原理说起,然后介绍一下Java中各种线程通信的实现机制,最后做一个系统的总结。
完了,CPU100%了
cpu使用率100%问题,是一个让人非常头疼的问题。因为出现这类问题的原因千奇百怪,最关键的是它不是必现的,有可能是系统运行了一段时间之后,在突然的某个时间点出现问题。
线程数量与执行效率的分析
在同一机器/操作系统上,使用n个线程处理X个任务是不是和使用n*m个线程处理X个任务效率相同?
自省|探讨线程间入门级协作的19个问题
在《并发之道:三大并发问题与 JMM 何干?》中,在讨论【编程语言如何解决并发问题】的话题时,有聊到编程语言面对并发的三大问题,它所做的是对多线程的通信、同步机制进行包装,为开发者提供使用轻便、功能丰富的多线程编程 API
面试官:如何排查死锁?
从易用性和性能方面来考虑,推荐使用 jconsole 或 jvisualvm 来排查死锁。
DCL单例模式是如何保证数据安全的?
承接上文证明CPU指令是乱序执行的。DCL单例(Double Check Lock)到底需不需要volatile?
单服务并发出票实践
一、背景 项目组上线集团客运站系统,该集团旗下六家客运站,每日出票量在1万~2万张左右(疫情期间票量下滑)。前期系统只能部署在一台单服务器上,应用程序与数据库(mysql)同服。 客运站出票业务有两大特点,一是出票渠道分散(人口窗口、自助设备、线上各分销渠道均支持出票);二是出票时间集中,全天出
多线程引发的惨案直接把年终给干没了
你好,我是坤哥前些日子我们线上出现了一个比较严重的故障,这个故障是多线程使用不当引起的,挺有代表性的,所以分享给大家,希望能帮大家避坑!问题描述先简单介绍一下问题产生的背景,我们有个返利业务,其中有个搜索场景,这个场景是用户在 app 输入搜索关键词,然后 server 会根据这个关键词到各个
虽然是我遇到的一个棘手的生产问题,但是我写出来之后,就是你的了。
这个案例就是一个纯技术的问题导致的,和业务的相关度其实并不大,所以你拿过去直接添油加醋,稍微改改,往自己的服务上套一下,那就是你的了。
JAVA中使用最广泛的本地缓存?Ehcache的自信从何而来3 —— 本地缓存变身分布式集群缓存,打破本地缓存天花板
上一篇文章中,我们知晓了如何在项目中通过不同的方式来集成Ehcache并在业务逻辑中进行使用。作为JAVA本地缓存框架综合实力天花板级别的Ehcache,除了在本地缓存方面具有强悍的实力外,还具有一个其它对手所不具备的特色功能,即Ehcache提供了对于集群能力的支持,这也使得Ehcache不仅仅是
让人恶心的多线程代码,性能怎么优化!
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分
读懂HikariCP一百行代码,多线程就是个孙子!
通常,我在看书的时候一般不写代码,因为我的脑袋被设定成单线程的,一旦同时喂给它不同的信息,它就无法处理。但多线程对电脑来说就是小菜一碟,它可以同时做很多事,看起来匪夷所思。好希望把自己的大脑皮层移植到这些牛x的设备上。用人脑思考电脑正在思考的问题,这本身就是一种折磨。但平常的工作和面试中,又不得
单核 CPU 支持 Java 多线程吗?为什么?
由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。时间片多任务系统往往需要同时执行多道作业。作业数往往大于机器的CPU数,然而一颗CPU同
【译】一个提升并发队列性能的专用算法
需要为您的队列创建多个写入线程和一个阅读线程吗?想要比java.util.concurrent.BlockingQueue更好的性能吗?试试这个
【译】在Java中创建了100万个线程以后
在我们深入研究创建一百万个线程之前,让我们看看Java线程的历史。自Java 1.0以来,Java线程一直存在,以便在Java应用程序中提供并发性。最初,它们被称为“绿色线程”,主要是完全由JVM管理的线程。这是因为在Java 1.0发布时,CPU大多是单核,当时的操作系统
夯实Java基础,一篇文章全解析线程问题
1. 线程是什么操作系统支持多个应用程序并发执行,每个应用程序至少对应一个进程 ,彼此之间的操作和数据不受干扰,彼此通信一般采用管道通信、消息队列、共享内存等方式。当一个进程需要磁盘IO的时候,CPU就切换到另外的进程,提高了CPU利用率。有了进程,为什么还要线程?因为进程的成本太高了。启动
Java多线程:从基本概念到避坑指南
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。多核的机器,现在已经非常常见了。即使是一块手机,也都配备了强劲的多核处理器。通过多进程和多线程的手段,就可以让多个CPU同时工作,来加快任务的执行。多线程,是编程中一个比较高级的话题。由于它涉及到共享资源的操作,所以在
【译】关于Java 并发和多线程编程的几个常见概念
在这篇文章中,我们将讨论并发编程中几种常见概念:同步、竞争条件和死锁。
【译】处理阻塞调用的两种方法:线程并发与网络异步
有两种方法可以处理涉及阻塞操作的客户端请求,他们是线程并发和网络异步,并对他们做了一个对比。
【译】如何用Chronicle 的开源Pauser,平衡低延迟和CPU使用率?
通常在低延迟开发中,必须在最小化延迟和避免过度使用 CPU 之间进行权衡。本文探讨了如何使用Chronicle 的Pausers(一种开源产品)在没有要处理的数据时设置自动退避策略,从而在资源使用和响应式、低延迟、低抖动的应用程序之间取得平衡。问题描述在典型的应用程序堆栈中,多个线程用于服务
基于JDK源码解析Java领域中的并发锁,我们可以从中学习到什么内容?
写在开头在Java领域中, 尤其是在并发编程领域,对于多线程并发执行一直有两大核心问题:同步和互斥。其中:互斥(Mutual Exclusion):一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。即就是同一时刻只允许一个线程访问共享资源的问题。同步(Sy
不堆概念、换个角度聊多线程并发编程
大家好,又见面了。在上一篇文档《JAVA基
代码改成多线程,竟有9大问题
前言很多时候,我们为了提升接口的性能,会把之前单线程同步执行的代码,改成多线程异步执行。比如:查询用户信息接口,需要返回用户基本信息、积分信息、成长值信息,而用户、积分和成长值,需要调用不同的接口获取数据。如果查询用户信息接口,同步调用三个接口获取数据,会非常耗时。这就非常有必要把三个接口调
线程池,我是谁?我在哪儿?
大家好,这篇文章跟大家探讨下日常使用线程池的各种姿势,重点介绍怎么在 Spring 环境中正确使用线程池。线程池使用姿势首先问大家一个问题,你日常开发中是怎样使用线程池的?我想大致可以分为以下四种情况:1.方法级,随用随建,用完关闭2.类级共享,定义个 static final 修饰
喜提JDK的BUG一枚!多线程的情况下请谨慎使用这个类的stream遍历。
你好呀,我是歪歪。前段时间在 RocketMQ 的 ISSUE 里面冲浪的时候,看到一个 pr,虽说是在 RocketMQ 的地盘上发现的,但是这个玩意吧,其实和 RocketMQ 没有任何关系。纯纯的就是 JDK 的一个 BUG。我先问你一个问题:LinkedBlockingQueue 这
你一定要知道的保证线程安全的10个小技巧
大家好,我是苏三,又跟大家见面了。导语对于从事后端开发的同学来说,线程安全问题是我们每天都需要考虑的问题。线程安全问题通俗的讲:主要是在多线程的环境下,不同线程同时读和写公共资源(临界资源),导致的数据异常问题。比如:变量a=0,线程1给该变量+1,线程2也给该变量+1。此时,线程3获取a的值
记一次微服务间调用超时排查
任何问题的发生都会留下痕迹,追踪这些痕迹逐一排除。通过加减法排除一些可能的怀疑点,最终真相就会出现在眼前。
美团动态线程池实践思路开源框架(DynamicTp),监控及源码解析篇
动态线程池项目DynamicTp开源四个月,目前1k+star,说明还是比较受欢迎的,现在已经有一些小伙伴在接入使用或者即将接入使用了,为了项目以后更好的发展迭代,打算出几篇文章来对DynamicTp做一些更详细的介绍,有兴趣的小伙伴欢迎一起参与进来完善迭代项目。
动态线程池(DynamicTp)之动态调整Tomcat、Jetty、Undertow线程池参数篇
这篇文章我们来介绍下动态线程池框架(DynamicTp)的adapter模块,上篇文章也大概介绍过了,该模块主要是用来适配一些第三方组件的线程池管理,让第三方组件内置的线程池也能享受到动态参数调整,监控告警这些增强功能。
美团动态线程池实践思路开源项目(DynamicTp),线程池源码解析及通知告警篇
我们来聊下动态线程池开源项目(DynamicTp)的通知告警模块。目前项目提供以下通知告警功能,每一个通知项都可以独立配置是否开启、告警阈值、告警间隔时间、平台等,具体代码请看core模块notify包。

有开始,就会有进​步!

在追求性能的道路上,记录每一刻的成长!源码解读,编程技巧,外文翻译,技术实践,线上案例等等,记录自己,启发他人!

专家作者推荐

巡山小汪

关注微信公众号《解Bug之路》,有问题请在公众号中咨询:) 无论多么艰苦的时刻,都不要忘记,辉煌的未来,在你的眼中闪耀!

飞哥开发内功

《深入理解Linux网络》作者,腾讯搜狗十年工程师,公众号「开发内功修炼」作者!

踩刀诗人

聊聊技术,唠唠段子,偶尔做菜写诗,欢迎关注我的公众号 踩刀诗人

Brand

搜索关注微信公众号【架构与思维】:撰稿者为bat、字节的几位高阶研发/架构,专注技术分享。

专题推荐

本系列文章主要针对Dubbo2.6.2(dubbox2.8.4)版本,从源码的角度分析Dubbo内部的实现细节,加深对Dubbo的各配置参数底层实现原理的理解,更好的指导Dubbo实践。
11篇文章14468阅读量
GC(Garbage Collection)很大程度上帮助Java程序员解决了内存释放的问题,有了GC,就不需要再手动的去控制内存的释放。
12篇文章30275阅读量