![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发专题
文章平均质量分 94
并发知识点
小超同学卷起来
这个作者很懒,什么都没留下…
展开
-
从0开始深入理解并发线程与等待通知机制(上)
因为 run 方法里有阻塞调用时会无法很快检测到取消标志,线程必须从阻塞调用返回后,才会检查这个取消标志。这种情况下,使用中断会更好,因为。原创 2023-07-16 18:28:06 · 55 阅读 · 0 评论 -
从0开始深入理解并发、线程与等待通知机制(中)
根据 Loom 团队在 2018 年公布的他们对 Jetty 基于纤程改造后的测试结果,同样在 5000QPS 的压力下, 以容量为 400 的线程池的传统模式和每个请求配以一个纤程的新并发处理模式进行对比, 前者的请求响应延迟在 10000 至 20000毫秒之间, 而后者的延迟普遍在 200 毫秒以下,目前 Java 中比较出名的协程库是 Quasar[ ˈkweɪzɑː® ](Loom 项目的 Leader 就是 Quasar 的作者 Ron Pressler),可以看到性能的提升还是非常明显的。原创 2023-07-17 23:42:52 · 106 阅读 · 0 评论 -
从0开始深入理解并发、线程与等待通知机制(下)
在调用 wait ()、 、notify() 系列方法 之前,线程必须要获得该对象的对象级用 别锁,即只能在同步方法或同步块中调用 wait ()方法、 、notify() 系列方法,进入 wait()方法后,当前线程释放锁,在从 wait()返回前,线程与其他线程竞争重新获得锁,执行 notify()系列方法的线程退出调用了 notifyAll 的 synchronized代码块的时候后,他们就会去竞争。线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照既定的代码一步一步地执行,直到终止。原创 2023-07-20 00:38:09 · 74 阅读 · 0 评论 -
导致 JVM 内存泄露的 ThreadLocal 详解
文章目录一、为什么要有 ThreadLocal二、ThreadLocal 的使用三、实现解析四、引发的内存泄漏分析五、错误使用 ThreadLocal 导致线程不安全一、为什么要有 ThreadLocal二、ThreadLocal 的使用三、实现解析四、引发的内存泄漏分析五、错误使用 ThreadLocal 导致线程不安全原创 2023-07-21 23:27:39 · 71 阅读 · 0 评论 -
CAS&Atomic 原子操作详解
文章目录一、什么是原子操作?如何实现原子操作?二、CAS 实现原子操作的三大问题ABA 问题循环时间长开销大只能保证一个共享变量的原子操作三、Jdk 中相关原子操作类的使用四、LongAdder一、什么是原子操作?如何实现原子操作?二、CAS 实现原子操作的三大问题ABA 问题循环时间长开销大只能保证一个共享变量的原子操作三、Jdk 中相关原子操作类的使用四、LongAdder原创 2023-07-23 23:16:25 · 77 阅读 · 0 评论 -
并发安全问题
文章目录一、线程安全性线程封闭栈封闭TheadLocal无状态的类让类不可变加锁和 CAS二、死锁概念学术化的定义现象、危害和解决现象危害解决三、其他安全问题活锁线程饥饿四、线程安全的单例模式双重检查锁定单例模式推荐实现懒汉式饿汉式一、线程安全性线程封闭栈封闭TheadLocal无状态的类让类不可变加锁和 CAS二、死锁概念学术化的定义现象、危害和解决现象危害解决三、其他安全问题活锁线程饥饿四、线程安全的单例模式双重检查锁定单例模式推荐实现懒汉式饿汉式原创 2023-07-24 18:02:22 · 59 阅读 · 0 评论 -
JUC并发工具类在大厂的应用场景详解
jdk提供了比synchronized更加高级的各种同步工具,包括。等,可以实现更加丰富的多线程操作。原创 2023-07-25 23:37:24 · 69 阅读 · 0 评论 -
深入理解AQS之ReentrantLock源码分析
文章目录一、如何设计一把独占锁二、管理模型MESA详解三、基于MESA规范Java是如何设计AQS的四、基于AQS手写一把独占锁五、JUC下独占锁ReentrantLock源码分析一、如何设计一把独占锁二、管理模型MESA详解三、基于MESA规范Java是如何设计AQS的四、基于AQS手写一把独占锁五、JUC下独占锁ReentrantLock源码分析原创 2023-07-26 23:45:59 · 99 阅读 · 0 评论 -
阻塞队列BlockingQueue实战及其原理分析
文章目录一、阻塞队列的特性及其应用场景分析二、如何设计一个阻塞队列三、ArrayBlockingQueue实现原理分析四、LinkedBlockingQueue实现原理分析五、延迟队列DelayQueue再下单场景中的应用六、如何选择适合的阻塞队列一、阻塞队列的特性及其应用场景分析二、如何设计一个阻塞队列三、ArrayBlockingQueue实现原理分析四、LinkedBlockingQueue实现原理分析五、延迟队列DelayQueue再下单场景中的应用六、如何选择适合的阻塞队列原创 2023-07-29 23:37:08 · 246 阅读 · 0 评论 -
线程池ThreadPoolExecutor底层原理分析
Tomcat中用的线程池为org.apache.tomcat.util.threads.ThreadPoolExecutor,注意类名和JUC下的一样,但是包名不一样。注入传入的队列为TaskQueue,它的入队逻辑为:‘特殊在:入队时,如果线程池的线程个数等于最大线程池数才入队入队时,如果线程池的线程个数小于最大线程池数,会返回false,表示入队失败这样就控制了,Tomcat的这个线程池,在提交任务时:1.仍然会先判断线程个数是否小于核心线程数,如果小于则创建线程。原创 2023-07-30 21:43:47 · 136 阅读 · 0 评论 -
线程池ThreadPoolExecutor底层源码分析
文章目录一、线程池中基本属性和方法源码解析二、线程池的五种状态变换源码分析三、线程池添加线程源码解析四、线程池线程运行执行任务源码解析五、线程池shutdown源码解析线程池中线程退出机制源码解析一、线程池中基本属性和方法源码解析二、线程池的五种状态变换源码分析三、线程池添加线程源码解析四、线程池线程运行执行任务源码解析五、线程池shutdown源码解析线程池中线程退出机制源码解析原创 2023-08-01 00:49:06 · 86 阅读 · 0 评论 -
线程池ForkJoinPool工作原理分析
文章目录一、如何快速高效的对2千万大小数组进行排序二、单线程和多线程并行场景下归并排序性能对比三、Java并行框架Fork/Join使用详解四、Fork/Join处理递归任务和阻塞任务注意事项五、ForkJoinPool工作原理分析一、如何快速高效的对2千万大小数组进行排序二、单线程和多线程并行场景下归并排序性能对比三、Java并行框架Fork/Join使用详解四、Fork/Join处理递归任务和阻塞任务注意事项五、ForkJoinPool工作原理分析原创 2023-08-02 11:08:53 · 196 阅读 · 0 评论 -
深入理解并发可见性、有序性、原子性与JMM内存模型
JSR-133使用happens-before的概念来指定两个操作之间的执行顺序。由于这两个操作可以在一个线程之内,也可以在不同的线程之内。因此,JMM可以通过happens-before关系向程序员提供跨线程的内存可见性保证。JSR-133规范对happens-before关系的定义如下:1)如果一个操作happens-before 另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。原创 2023-08-03 20:48:43 · 197 阅读 · 0 评论