随笔分类 - 多线程
摘要:背景 测试反馈,接口超时,没有数据返回。本地使用ApiFox调用接口,发现经过3-4分钟,接口迟迟没有数据返回。 解决 查看日志,发现有报错信息: Exception in thread "data-query-executor-7" org.springframework.jdbc.Uncateg
阅读全文
摘要:关于线程池的详细分析,具体请看这篇帖子:https://www.cnblogs.com/reecelin/p/12334107.html 在开始之前,我们还是再来复习一下线程池的工作流程吧,如下所示: 现在,我们可以根据上面的流程简单写个线程池,如下: public interface Thread
阅读全文
摘要:前言 在多线程开发中,线程池是个利器,可以帮助我们管理线程和复用线程。而在线程池中,用来保存线程和任务的数据结构就是队列,如newFixedThreadPool和newSingleThreadExecutor这两个线程池使用的LinkedBlockingQueue队列,newCachedThread
阅读全文
摘要:概述 ThreadLocal提供了一种线程安全的数据访问方式,每个线程中都存在一个共享变量副本,从而实现多线程状态下的线程安全。 demo public static void main(String[] args) { final ThreadLocal<Integer> MAIN = Threa
阅读全文
摘要:但凡了解过并发编程的程序猿,应该都知道volatile解决了并发编程的可见性和有序性问题,但底层具体是如何实现的呢? 有序性 volatile可以禁止指令重排序,从而保证并发编程的有序性。那volatile如何实现禁止指令重排序的呢?答案就是内存屏障。 内存屏障是一类同步屏障指令,是CPU或者编译器
阅读全文
摘要:ThreadPoolExecutor源码分析 上一篇(https://www.cnblogs.com/reecelin/p/12334107.html)中,我们对ThreadPoolExecutor的使用有了初步了解,今天我们来详细解剖一下ThreadPoolExecutor的源码,分析其机制和原理
阅读全文
摘要:说FutureTask之前,我们先来说一下Future这个接口。 Future 接口上有许多注释,总结下来如下: 定义了异步计算的接口,提供了计算是否完成的 check、等待完成和取回等多种方法; 如果想得到结果可以使用 get 方法,此方法(无参方法)会一直阻塞到异步任务计算完成; 取消可以使用
阅读全文
摘要:Java中除了提供synchronized这个关键字来实现对对象的加锁之外,在J.U.C包中还提供了其他加锁的方式。其中最重要,最常见的莫过于ReentrantLock。ReentrantLock是一个可重入互斥锁,其具有与使用synchronized方法和语句访问的隐式监视锁相同的基本行为和语义,
阅读全文
只有注册用户登录后才能阅读该文。
只有注册用户登录后才能阅读该文。