
多线程
文章平均质量分 64
IAmZRH
虚心学习,共同进步
展开
-
Future异步回调进阶使用记录一下
前言在某些场景中,对于一些不重要的任务可以使用异步执行的方式进行处理,而有些情况下又有需要获取异步执行任务的回调结果这时就可以使用Future接口,这次结合个人理解,记录一下关于Future接口异步回调的进阶使用,以便后续查阅。FutureTask在使用线程池异步执行任务时,如果需要获取执行结果,那就需要使用submit()方法提交任务,其内部会封装一个FutureTask对象,最后通过get()方法阻塞式获取结果(其实相当于伪异步):public static void main (S原创 2021-10-29 22:05:15 · 554 阅读 · 1 评论 -
线程池调优之动态参数配置
前言线程池的核心参数配置在网上有一大堆的文章介绍,这次结合个人理解写一篇文章记录一下,以便加深印象和后续查阅。线程池配置参数corePoolSize:线程池核心线程数maximumPoolSize:线程池最大线程数keepAliveTime:允许线程空闲时间(对非核心工作线程的回收)TimeUnit:线程空闲时间单位workQueue:线程队列(当核心线程数满了,新的任务就会放入这个队列中)threadFactory:线程工厂(用于创建工作线程,自定义线程工厂可以指定线程名称)han原创 2021-10-08 18:30:39 · 1938 阅读 · 0 评论 -
用多线程模拟2PC事务提交
用多线程模拟2PC事务提交前言代码实现最后前言之前遇到过一个面试题,要求的是在多线程执行同一批任务里,如果有有一个线程执行失败,那么需要把其他线程通知回滚任务。废话不多说,下面直接上代码。代码实现/** * 2PC事务 -> 分布式事务 * * @Author: ZRH * @Date: 2021/4/1 10:16 */public class Test1 { /** * 子线程最后提交事务还是回滚事务的标识 */ private st原创 2021-04-01 17:00:45 · 339 阅读 · 1 评论 -
手撸一个线程池
常规开头多线程编程是在开发过程中非常基础且非常重要的一个环节,基本上任何一家软件公司或者项目中都会使用多线程。当然在项目中通常都是通过线程池的方式执行多线程任务。看线程池执行流程和源码设计有助于提升我们多线程编程技术和解决工作中遇到的问题。很久之前就看过ThreadPoolExecutor线程池源码,了解其执行过程。这次准备手撸一个简单版的线程池加强一下对执行流程的理解。简单的过程废话不多说,直接上代码/** * @Author: ZRH * @Date: 2021/3/5 15:13原创 2021-03-05 17:15:18 · 296 阅读 · 2 评论 -
多线程异常了会怎样?
多线程中如果一下线程发生异常,会有什么结果。这里都是使用Executor线程池:1,如果是用execute方法执行线程,那么会直接抛异常:如果是用submit方法提交线程,不会直接打印异常,而是需要调用future.get()方法才会打印异常。2,当线程抛异常后不会影响其他线程。3,当线程抛异常后,线程不会回收到线程池而是直接移除线程,并且创建一个新的线程放入线程池中。...原创 2021-03-01 14:29:40 · 218 阅读 · 0 评论