
多线程
以实战为主
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
小码农叔叔
这个作者很懒,什么都没留下…
展开
-
java线程池详解
一、为什么使用线程池在java中,执行任务的最小单位是线程,因此线程对于jvm来说是非常珍贵的资源。我们知道,线程的创建、销毁都需要CPU分配资源,即进行时间分片做上下文的切换来处理线程的资源分配,如果频繁的创建和销毁线程,尤其是在资源密集型的系统中,这是一笔很大的开销,因此,需要引入一种组件或者管理器,可以对线程的创建、分配、回收等操作进行维护和管理,这就是线程池的功能;因此使用线程池的好处...原创 2020-01-05 18:18:10 · 56697 阅读 · 0 评论 -
java模拟多线程买票问题
多线程买票是java中的一个经典案例,其主要思想无非包括2点,synchronized和锁,两者中,前者实现同步,后者为同步的线程提供锁,从而实现多个线程共享同一份资源时候,能够同步进行;经典的方式是synchronized + 锁对象,同样采用诸如Lock即显式的声明concurrent中的锁也可以实现同样的效果,可根据实际情况酌情使用,以下分别采用不同的方式实现模拟多窗口买票场景方式1...原创 2018-09-07 19:18:04 · 69128 阅读 · 3 评论 -
java获取多线程执行结果几种方式小结
前言在使用多线程的场景中,经常需要获取多线程的执行结果,有的甚至还需要合并不同线程的执行结果进行后续的业务逻辑处理等,下面对常用的几种获取与合并多线程的执行结果的方式做一下小结1、thread.join的方式在jdk8之前,线程本身提供了join的方法,可以让其他线程加入到当前主线程中,等到所有的线程执行完毕自己的逻辑之后,主线程就可以获取并合并各个线程的结果了,下面看实例代码public class ThreadJoinTest1 { static int sum1 = 0; s原创 2020-08-20 20:07:26 · 34463 阅读 · 1 评论 -
java实现线程通信的几种方式
前言在多线程的世界里,线程与线程之间的交互无处不在,只不过在平时的开发过程中,大多数情况下,我们都在单线程的模式下进行编码,即使有,也直接借助框架自身的机制实现了,其实线程之间的通信在JDK中是一个比较深的问题,比如大家熟知的消息中间件的实现,从某种角度上讲,就借助了多线程通信的思想,下面总结了JDK中常用的几种实现线程通信的方式,提供参考1、synchronized实现方式可能很多小伙伴们会有疑问,synchronized是对共享资源加锁使用的,怎么和线程通信扯在一起呢?这里纠正一个小小的偏见,也是原创 2020-05-30 19:34:35 · 57534 阅读 · 1 评论 -
ForkJoin框架简单使用
场景描述设想这样一个场景,在一个接口中,需要通过http的方式调用多个外部接口,而且可能存在某几个接口非常耗时的情况,这么一来,对当前接口来说,由于是串行的执行,忽略本地接口的耗时,总的耗时就可以大致估算为调用的多个外部接口响应时间之和,这还是在没有考虑网络延时等其他外部因素作用下这种场景在业务中随处可见,也是程序员考虑的优化接口响应时间的入手点解决思路当存在上述的情况,我们很自然的联想到...原创 2020-03-14 22:22:39 · 19430 阅读 · 0 评论 -
java使用多线程导出excel
前言在一个业务中,需要将数据库的一张日志表导出到excel中做统计分析归类,由于单表的数据量特别大,发现在最终导出excel的时候,由于数量太大,导出速度特别慢,想了一些办法,不管使用何种API,单线程始终是操作的瓶颈,因此最终考虑使用多线程进行改善总体思路:1、数据总量分段2、每个线程处理不同分段的数据3、提交线程池下面来看具体的代码,为测试方便,这里直接使用一个测试接口进行调用,...原创 2019-12-11 18:55:42 · 73254 阅读 · 13 评论 -
java使用多线程查询大批量数据
前言在某些时候,一旦单表数据量过大,查询数据的时候就会变得异常卡顿,虽然在大多数情况下并不需要查询所有的数据,而是通过分页或缓存的形式去减少或者避免这个问题,但是仍然存在需要这样的场景,比如需要导出一大批数据到excel中,导出数据之前,首先得把数据查询出来吧?这个查询的过程,数据量一旦过大,单线程查询数据将会成为瓶颈,下面尝试使用多线程来尝试查询一张数据量较大的表由于代码逻辑不是很难,直接上...原创 2019-12-11 18:18:22 · 73651 阅读 · 60 评论 -
Hystrix 线程池隔离与接口限流
认识HystrixHystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程隔离、信号量隔离、降级策略、熔断技术。在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常大,依赖有很多不可控的因素,比如网络连接变慢,资源突然繁忙,暂时不可用,服务脱机等。我们要构建稳定、可靠的分布式系统,就必须要有这样一套容错方法。本文主要讨论线程隔离技术。为什么要做线程隔离比如我们现在有...原创 2019-04-14 21:26:57 · 45084 阅读 · 0 评论 -
多线程实现项目初始化完成大规模数据写入redis缓存
**项目中,经常碰见需要在项目初始化时完成从mysql的数据写入到缓存如redis中的操作,例如ssm架构项目中,需要某个类实现一个initializeBean的接口,在这个类里面完成初始化的操作,将mysql的数据写到redis或其他缓存即可。**说起来倒不难,但是真正执行的时候要考虑的问题点却很多,比如说,如果你的数据量是百万级甚至千万级的,单纯是项目初始化这个过程可能就要花费很久,可能你...原创 2019-02-27 10:42:57 · 49971 阅读 · 0 评论 -
阻塞和非阻塞队列下两种生产者消费者实现
队列可分为两种,一种是阻塞队列,一种是非阻塞队列。阻塞队列和非阻塞队列的区别:阻塞队列可以阻塞,非阻塞队列不能阻塞,只能使用队列wait(),notify()进行队列消息传送。而阻塞队列当队列里面没有值时,会阻塞直到有值输入。输入也一样,当队列满的时候,会阻塞,直到队列不为空。自从Java 1.5之后,在java.util.concurrent包下提供了若干个阻塞队列,主要有以下几个:Arr...原创 2019-02-21 20:52:38 · 21459 阅读 · 0 评论 -
使用countDownLahct模拟多线程并发场景
本篇通过比较Hashtable和ConcurrentHashMap在多线程场景下的性能,下面直接上代码,1、首先看hashTable,public class CurrentTest { public static void main(String[] args) { final Map<String, String> map = new Hashtable<S...原创 2018-12-17 22:42:27 · 41833 阅读 · 0 评论