多线程
文章平均质量分 62
沐风Cc
一步一个脚印,加油 加油
展开
-
记录一次由于OOM的unable to create new native thread异常引发的线上问题
早上刚到公司,产品就跑过来说:xxx看看这个工单数据是怎么回事?为什么和预期的不一致呢?顿时感觉头大。早饭也顾不上吃了,就拿到数据ID在Elk中搜索日志…问题描述: 根据数据ID,在ELK海量日志中搜索,发现该请求竟然OOM了!!! what? 真是让我惊讶。 仔细查看下报错的原因竟是,JVM申请不到线程来处理本次请求,而导致的OOM。具体日志如下: 原因定位:nested exception is java.lang.OutOfMemoryError: unable to create n原创 2021-07-06 20:46:33 · 1385 阅读 · 1 评论 -
AQS同步器代码分析
AQS原理代码分析特点:可重入锁,有公平锁、非公平锁区分,默认非公平锁。大概逻辑:修改成功并获得锁加入到等待队列Node1、Node2、Node3、…让等待队列线程挂起LockSuport.part(next); 阻塞挂起响应唤醒挂起的线程。LockSuport.unpart(next);Lock代码分析//非公平锁ReentrantLock rLock = new ReentantLock();rLock.lock();//方法 final原创 2021-06-08 20:53:19 · 188 阅读 · 0 评论 -
记录多线程使用引发的线程安全问题 -- Callable<T> 返回值场景
1.场景:进行多线程处理时,需根据传递的参数,执行相应的方法,并返回结果代码相关:package cn.sys.Test.thread.callable;import lombok.Getter;import lombok.Setter;import java.util.concurrent.*;class Task implements Callable<String> { private ThreadPoolExecutorTest test; pri原创 2021-03-11 17:01:27 · 438 阅读 · 3 评论 -
多线程之---CountDownLatch和CylicBarrier
随手记录一下,写的粗糙,没有涉及原理,方便自己。以后再深入研究1.CountDownLatchCountDownLatch是一个计数器闭锁,通过它可以完成类似于阻塞当前线程的功能,即:一个线程或多个线程一直等待,直到其他线程执行的操作完成2.CylicBarrierCyclicBarrier允许一组线程在到达某个栅栏点(common barrier point)互相等待,直到最后一个...原创 2020-05-03 17:46:03 · 423 阅读 · 0 评论 -
多线程之--- 信号量Semaphore
写这篇博客的目的是增加自己记忆,方便平常使用1.信号量Semaphore 是一种基于计数的信号量,它可以是一个阀值,基于此,多个线程竞争获取许可信号,超过阀值后,线程申请许可信号将会别阻塞常用方法方法含义acquire()申请一个信号量获取可用的资源,如果可用, 信号量内部的资源个数减掉1,如果没有可用资源线程会阻塞在该方法中,不能结束该方法,不能返回,直到有可用...原创 2020-05-03 17:13:58 · 455 阅读 · 0 评论