![](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 评论 -
JAVA 分析线程池中的keepAliveTime参数具体实现
分析线程池中的keepAliveTime参数具体实现参数意义创建线程池时,有一个重要参数就是keepAliveTime,标记线程空闲多久后被释放。那么他到底是怎么实现的呢?猜想有一个线程在维护时间,可笑。专门有一个线程去维护,浪费资源,而且时间也不够精确。而且还要开辟空间记录线程开始空闲的时间,消耗空间。源码分析java.util.concurrent.ThreadPoolExecutor#getTask /** * Performs blocking or timed wa原创 2020-07-30 09:31:39 · 3490 阅读 · 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 评论 -
JAVA多线程以及Spring异步注解@Async
JAVA多线程以及Spring异步注解@Async文章目录JAVA多线程以及Spring异步注解@Async关于多线程关于线程池如何创建线程池早期创建线程池的方式规范地使用线程池spring线程池配置@Async注解作用域引入依赖启动Spring异步注解无需返回的异步调用带Future返回的异步调用应用ayml配置文件异步异常处理器异步异常配置类配置多个线程池应用yaml配置文件异步配置类使用线程池总结关于多线程参考1 Java中可以通过new Thread()来构造线程,但是通过直接new一原创 2020-05-30 22:26:27 · 3130 阅读 · 0 评论