随笔分类 -  多线程

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

点击右上角即可分享
微信分享提示