![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
辉度
这个作者很懒,什么都没留下…
展开
-
JAVA Thread Dump分析线程竞争
Thread Dump分析线程竞争并不是用了线程池、多线程,就可以带来更高的性能的,总有些地方需要一个锁进行同步。JAVA 中的synchronized就是一种悲观锁。本次分析Thread Dump发现性能问题是一个OOM问题中的消费速率过慢的问题。截图对于线程池pool-20来说,一共12个线程,一个处于running,一个waiting,还有10个处于blocking的状态,基本就是同步进行了,无意义的多线程了。发现#getData方法是synchronized修饰的,从类名也可以看出来原创 2020-08-09 20:45:00 · 130 阅读 · 0 评论 -
一次zookeeper Curator客户端导致JVM OOM问题的分析记录
一次JVM OOM问题的分析记录OOM问题发生在客户的开发环境,系统是一个监控系统,表现为先高CPU,页面极卡,最后发生OOM。问实施人员拿到Heap Dump文件。来看看到底是内存不够用溢出了,还是发生了内存泄漏。Heap Dumpjdk自带的jvisualvm可以用,但是表现在我电脑上卡的不行。Dump文件接近7G。jprofiler,商用。本次分析借用其试用的10天。Classes查看到LinkedBlockingQueue$Node的个数到达了1亿6千万的层次,占用了近4G的内存。原创 2020-08-09 20:22:10 · 2082 阅读 · 0 评论 -
分析ThreadLocal如何做到单个线程独享
分析ThreadLocal如何做到单个线程独享前情概要我们可能都知道SimpleDateFormat这个类的实例它不是线程安全的,如果不知道,我把代码贴这儿: // 类的成员变量 protected Calendar calendar; // 这个私有方法会对calendar对象进行赋值,但是没有加锁,在多并发场景下,就造成了问题。 // Called from Format after creating a FieldDelegate private StringBuffe原创 2020-07-29 22:58:22 · 468 阅读 · 0 评论 -
volatile关键词在多线程中的应用
volatile关键词在多线程中的应用volatile 是什么首先我们就来介绍一下 volatile,它是 Java 中的一个关键字,是一种同步机制。当某个变量是共享变量,且这个变量是被 volatile 修饰的,那么在修改了这个变量的值之后,再读取该变量的值时,可以保证获取到的是修改后的最新的值,而不是过期的值。// 摘自《Java 并发编程 78 讲》使用场景基本属性的赋值例如int,boolean的赋值,因为赋值操作为原子操作。应要注意到i++ 不是原子操作,不在此列。而布尔值的操作基原创 2020-07-05 23:30:48 · 210 阅读 · 0 评论 -
JAVA并发系列--ForkJoinPool初体验
ForkJoinPool初体验ForkJoinPool是什么 ForkJoinPool是JAVA中较新的线程池,先来尝试一下学习使用。他主要用来处理能够产生子任务的任务。这个线程池是在 JDK 7 加入的,它的名字 ForkJoin 也描述了它的执行机制,主要用法和之前的线程池是相同的,也是把任务交给线程池去执行,线程池中也有任务队列来存放任务。但是 ForkJoinPool 线程池和之前的线程池有两点非常大的不同之处。第一点它非常适合执行可以产生子任务的任务。如图所示,我们有一个 Task,这原创 2020-07-05 17:27:21 · 290 阅读 · 0 评论