CompletionService之二:深入解析
摘要:要点解说 假设现在有一大批需要进行计算的任务,为了提高整批任务的执行效率,你可能会使用线程池,向线程池中不断submit异步计算任务,同时你需要保留与每个任务关联的Future,最后遍历这些Future,通过调用Future接口实现类的get方法获取整批计算任务的各个结果。 虽然使用了线程池提高了整
阅读全文
posted @
2021-04-05 13:19
duanxz
阅读(257)
推荐(0) 编辑
CompletionService之一:获得线程(线程池的)处理结果
摘要:《Thread之四:java线程返回结果的方法》 《Runnable、Callable、Future和FutureTask之一:获取线程的返回值》 《CompletionService之一:获得线程(线程池的)处理结果》 使用线程池的时候,经常会有需要获得线程处理结果的时候。此时我们通常有两种做法:
阅读全文
posted @
2021-04-05 11:08
duanxz
阅读(490)
推荐(0) 编辑
tomcat工作原理
摘要:一、tomcat原理 二、tomcat线程池介绍 三、tomcat线程池工作原理 四、tomcat线程池跟jdk线程池的主要区别 一、tomcat原理 功能组件结构 Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。其
阅读全文
posted @
2021-04-02 09:11
duanxz
阅读(3925)
推荐(0) 编辑
JDK线程池原理之一:工作原理
摘要:一、线程池工作原理(新任务进入时线程池的执行策略)二、创建线程池的方式三、合理配置线程池四、ThreadPoolExecutor的函数说明 一、线程池工作原理(新任务进入时线程池的执行策略) 线程池的触发时机如下图: 当一个任务通过execute(Runnable)方法欲添加到线程池时: 1、如果此
阅读全文
posted @
2021-04-01 15:29
duanxz
阅读(351)
推荐(0) 编辑
Spring @Async之四:Aysnc的异步执行的线程池实现原理
摘要:对于异步方法调用,从Spring3开始提供了@Async注解,该注解可以被标注在方法上,以便异步地调用该方法。调用者将在调用时立即返回,方法的实际执行将提交给Spring TaskExecutor的任务中,由指定的线程池中的线程执行。 遇到开发人员只会简单的使用@Async注解,而不知其实现原理,更
阅读全文
posted @
2018-08-07 18:45
duanxz
阅读(3119)
推荐(0) 编辑
Spring线程池之二:spring线程池(同步、异步)
摘要:一、spring异步线程池类图 二、简单介绍 2.1. TaskExecutor Spring异步线程池的接口类,其实质是java.util.concurrent.Executor 以下是官方已经实现的全部7个TaskExecuter。Spring宣称对于任何场景,这些TaskExecuter完全够
阅读全文
posted @
2018-08-07 10:06
duanxz
阅读(51380)
推荐(2) 编辑
Spring @Async之三:Spring @Async使用方法总结
摘要:引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3.x之后,就已经内置了@Async来完美解决这个问题,本文将完成介绍@Async的用法。 1. 何为异
阅读全文
posted @
2017-04-28 18:57
duanxz
阅读(22806)
推荐(7) 编辑
Spring @Async之一:实现异步调用示例
摘要:什么是“异步调用”? “异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。 同步调用 下面通过一个简单示例来直观的理解什么是同步调用: 定义Task类,创建
阅读全文
posted @
2017-04-28 18:26
duanxz
阅读(9825)
推荐(2) 编辑
Spring @Async之二:SpringBoot 自定义线程池,修改springboot的默认线程池
摘要:本教程目录: 自定义线程池 配置spring默认的线程池 1. 自定义线程池 1.1 修改application.properties task.pool.corePoolSize=20 task.pool.maxPoolSize=40 task.pool.keepAliveSeconds=300
阅读全文
posted @
2016-11-21 10:18
duanxz
阅读(31870)
推荐(5) 编辑
ThreadLocal的坑--ThreadLocal跨线程传递问题
摘要:1、父子线程间的传递问题 ThreadLocal的子类InheritableThreadLocal其实已经帮我们处理好了,通过这个组件可以实现父子线程之间的数据传递,在子线程中能够父线程中的ThreadLocal本地变量。 我们发现InheritableThreadLocal中createMap,以
阅读全文
posted @
2016-04-28 23:38
duanxz
阅读(5167)
推荐(0) 编辑
JDK实现的线程池之四:jdk实现的ScheduledThreadPoolExecutor
摘要:一、定时任务调度方式常见的有: 1、cron是一个linux下的定时执行工具,一些重要的任务的定时执行可以通过cron来实现,例如每天凌晨1点备份数据等。 2、在JAVA WEB开发中,我们也经常需要用到定时执行任务的功能,JDK提供了Timer类与ScheduledThreadPoolExecut
阅读全文
posted @
2016-01-05 21:08
duanxz
阅读(851)
推荐(0) 编辑
JDK实现的线程池之五: ForkJoinPool、newWorkStealingPool
摘要:ForkJoinPool 在Java 7中引入了一种新的线程池:ForkJoinPool。 它同ThreadPoolExecutor一样,也实现了Executor和ExecutorService接口。它使用了一个无限队列来保存需要执行的任务,而线程的数量则是通过构造函数传入,如果没有向构造函数中传入
阅读全文
posted @
2015-12-18 10:14
duanxz
阅读(1963)
推荐(2) 编辑
Thread之四:java线程返回结果的方法
摘要:《Thread之四:java线程返回结果的方法》 《Runnable、Callable、Future和FutureTask之一:获取线程的返回值》 《CompletionService之一:获得线程(线程池的)处理结果》 本文目录: 第一种方法:通过线程的实例变量传递方式获取结果第二种方法:使用Ca
阅读全文
posted @
2015-12-17 11:05
duanxz
阅读(5617)
推荐(0) 编辑
Spring线程池之一:由浅入深的3个示例
摘要:作者博客主页:http://blog.csdn.net/chszs 本文提供了三个Spring多线程开发的例子,由浅入深,由于例子一目了然,所以并未做过多的解释。诸位一看便知。 例子1:Spring结合Java线程。 通过继承Thread创建一个简单的Java线程,然后使用@Component让Sp
阅读全文
posted @
2015-12-16 12:07
duanxz
阅读(2007)
推荐(0) 编辑
JDK实现的线程池之一:ThreadPoolExecutor、三种阻塞队列、四种拒绝策略、五种线程池、七个参数、线程池状态
摘要:一、concurrent包中的五种线程池的简单介绍 二、ThreadPoolExecutor类七个参数 三、三种阻塞队列四、四种拒绝策略 五、线程池executor执行逻辑 一、concurrent包中的五种线程池的简单介绍 线程池按照线程数量可以分为:一是固定线程数量的线程池;二是可变数量的线程池
阅读全文
posted @
2015-12-16 11:51
duanxz
阅读(1555)
推荐(1) 编辑
Spring线程池之二:ThreadPoolTaskExecutor介绍
摘要:一、spring线程池中的主要接口和类 Java SE 5.0引入了ThreadPoolExecutor、ScheduledThreadPoolExecutor。Spring 2.x借助ConcurrentTaskExecutor和ThreadPoolTaskExecutor能够通过IoC配置形式自
阅读全文
posted @
2015-12-16 10:03
duanxz
阅读(11047)
推荐(0) 编辑
Spring线程池之三:有返回值的线程池使用
摘要:1、配置 import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; //该注解的locations已经被启用
阅读全文
posted @
2015-12-16 09:55
duanxz
阅读(2809)
推荐(0) 编辑
Spring线程池之四:Spring线程池监控
摘要:一、JDK线程池监控参数 线程池提供了以下几个方法可以监控线程池的使用情况: 方法 含义 getActiveCount() 线程池中正在执行任务的线程数量 getCompletedTaskCount() 线程池已完成的任务数量,该值小于等于taskCount getCorePoolSize() 线程
阅读全文
posted @
2015-12-16 09:44
duanxz
阅读(2906)
推荐(0) 编辑
ThreadPoolTaskExecutor的配置解释--temp
摘要:ThreadPoolTaskExecutor的配置在网上找了很多解释没找到,看了下ThreadPoolExecutor的配置,名字差不多,应该含义也差不多。只不过ThreadPoolTaskExecutor对 ThreadPoolExecutor做了包装。 <bean id ="taskExecut
阅读全文
posted @
2015-12-16 09:29
duanxz
阅读(1285)
推荐(0) 编辑
JDK实现的线程池之四-2:jdk实现的ScheduledThreadPoolExecutor之DelayedWorkQueue队列(最小堆数据结构)
摘要:DelayedWorkQueue优先队列 该队列是定制的优先级队列,只能用来存储RunnableScheduledFutures任务。堆是实现优先级队列的最佳选择,而该队列正好是基于堆数据结构的实现。 1.关于堆的一些知识 堆结构是用数组实现的二叉树,数组下标可以表明元素节点的位置,所以省去指针的内
阅读全文
posted @
2015-05-09 00:29
duanxz
阅读(1770)
推荐(0) 编辑