随笔分类 -  Java并发

摘要:线程池配置模板 [TOC] springboot给我们提供了一个线程池的实现,它的底层是由线程池ThreadPoolTaskExecutor来实现的。相较与JDK提供的线程池进行了一些功能的增强,比如对线程状态的监听,在我们在使用的时候更加的方便。在这里给各位同学一个配置模板,简单的讲解下Sprin 阅读全文
posted @ 2018-11-27 11:14 上帝爱吃苹果-Soochow 阅读(4075) 评论(1) 推荐(2) 编辑
摘要:用两个线程将两个数组轮流输出(数组可能不等长)。输入a1[1,2,3,4],a2[5,6,7,8,9] 输出1,5,2,6,3,7,4,8 轮流输出两个数的实现方法有多种,最简单的可以采用Synchronized来同步实现,如果这是面试场合的题目的话,恐怕不是面试官想要的答案,因为同步意味着效率不高 阅读全文
posted @ 2018-10-14 16:22 上帝爱吃苹果-Soochow 阅读(1281) 评论(0) 推荐(0) 编辑
摘要:自己实现阻塞队列的话可以采用Object下的wait和notify方法,也可以使用Lock锁提供的Condition来实现,本文就是自己手撸的一个简单的阻塞队列,部分借鉴了JDK的源码。Ps:最近看面经的时候发现字节跳动的面试官特别喜欢让面试者手写阻塞队列,希望本文能对大家有帮助。个人手撸如有错误还 阅读全文
posted @ 2018-09-27 16:08 上帝爱吃苹果-Soochow 阅读(4370) 评论(4) 推荐(0) 编辑
摘要:为什么ConcurrentHashMap的读操作不需要加锁? 我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢? ConcurrentHashMap的 阅读全文
posted @ 2018-09-12 09:47 上帝爱吃苹果-Soochow 阅读(23134) 评论(6) 推荐(17) 编辑
摘要:线程池源码解析 线程池的概念 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互。使用线程池可以很好的提高性能,尤其是程序中需要创建大量生存期很短暂的线程。 使用线程池的优势 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁的开销。 提高响应速度。当任务到达时,任务可以不需要等到 阅读全文
posted @ 2018-07-24 17:22 上帝爱吃苹果-Soochow 阅读(3063) 评论(0) 推荐(4) 编辑
摘要:分布式全局ID生成器设计 项目是分布式的架构,需要设计一款分布式全局ID,参照了多种方案,最后基于snowflake的算法设计了一款自用ID生成器。具有以下优势: 1. 保证分布式场景下生成的ID是全局唯一的 2. 生成的全局ID整体上是呈自增趋势的,也就是说整体是粗略有序的 3. 高性能,能快速产 阅读全文
posted @ 2018-07-21 18:52 上帝爱吃苹果-Soochow 阅读(8209) 评论(4) 推荐(3) 编辑
摘要:在阅读多线程书籍的时候,对volatile的原子性产生了疑问,问题类似于这篇 "文章" 所阐述的那样。经过一番思考给出自己的理解。 我们知道对于可见性,Java提供了volatile关键字来保证 可见性 、 有序性 。 但不保证原子性 。 普通的共享变量不能保证可见性,因为普通共享变量被修改之后,什 阅读全文
posted @ 2018-07-02 18:13 上帝爱吃苹果-Soochow 阅读(7712) 评论(8) 推荐(3) 编辑