Java并发
文章平均质量分 92
chun_soft
再忙也不要忘记学习!
展开
-
如何优雅的自定义 ThreadPoolExecutor 线程池
1、概述 java 中经常需要用到多线程来处理一些业务,非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程,那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险,这个时候引入线程池比较合理,方便线程任务的管理。 java中涉及到线程池的相关类均在 jdk 1.5 开始的java.util.concurrent包中,涉及到的几个核心类及接口包括:Executor、Executors、ExecutorService、ThreadPoolEx原创 2021-05-10 17:26:45 · 7812 阅读 · 2 评论 -
并发编程的基本认识
1、并发的发展历史 1.1 真空管和穿孔打卡 最早的计算机只能解决简单的数学运算问题,比如正弦、余弦等。运行方式:程序员首先把程序写到纸上,然后穿孔成卡片,再把卡片盒带入到专门的输入室。输入室会有专门的操作员将卡片的程序输入到计算机上。计算机运行完当前的任务以后,把计算结果从打印机上进行输出,操作员再把打印出来的结果送入到输出室,程序员就可以从输出室取到结果。然后,操作员再继续从已经送入到输入室的卡片盒中读入另一个任务重复上述的步骤。 操作员在机房里面来回调度资源,以及计算机同一个时刻只能运行一个程序,在程原创 2021-02-20 13:47:54 · 395 阅读 · 1 评论 -
阻塞队列的原理解析
1、生产者消费者的实际使用 大家都有使用过分布式消息队列,比如 ActiveMQ、 kafka、RabbitMQ 等等,消息队列的是有可以使得程序之间实现解耦,提升程序响应的效率。如果我们把多线程环境比作是分布式的话,那么线程与线程之间是不是也可以使用这种消息队列的方式进行数据通信和解耦呢? 2、阻塞队列的使用案例 2.1 案例 注册成功后增加积分 假如我们模拟一个场景,就是用户注册的时候,在注册成功以后发放积分。这个场景在一般来说,我们会这么去实现: 但是实际上,我们需要考虑两个问题: 性能,在注册这原创 2021-02-03 14:28:49 · 680 阅读 · 0 评论