摘要:
问题 (1)自己动手写的线程池如何支持带返回值的任务呢? (2)如果任务执行的过程中抛出异常了该怎么处理呢? 简介 上一章我们自己动手写了一个线程池,但是它是不支持带返回值的任务的,那么,我们自己能否实现呢?必须可以,今天我们就一起来实现带返回值任务的线程池。 前情回顾 首先,让我们先回顾一下上一章 阅读全文
posted @ 2020-11-24 20:47
白露~
阅读(217)
评论(0)
推荐(0)
|
摘要:
问题 (1)自己动手写的线程池如何支持带返回值的任务呢? (2)如果任务执行的过程中抛出异常了该怎么处理呢? 简介 上一章我们自己动手写了一个线程池,但是它是不支持带返回值的任务的,那么,我们自己能否实现呢?必须可以,今天我们就一起来实现带返回值任务的线程池。 前情回顾 首先,让我们先回顾一下上一章 阅读全文
posted @ 2020-11-24 20:47
白露~
阅读(217)
评论(0)
推荐(0)
摘要:
问题 (1)自己动手写一个线程池需要考虑哪些因素? (2)自己动手写的线程池如何测试? 简介 线程池是Java并发编程中经常使用到的技术,那么自己如何动手写一个线程池呢?本文彤哥将手把手带你写一个可用的线程池。 属性分析 线程池,顾名思义它首先是一个“池”,这个池里面放的是线程,线程是用来执行任务的 阅读全文
posted @ 2020-11-24 20:35
白露~
阅读(583)
评论(0)
推荐(0)
摘要:
前言 和设计模式一样,打算花三个月的时间,结合《Java并发编程实战》一书,来总结下并发方面的知识。第一章从线程池的原理开始总结,希望自己能坚持下来,加油! 1. 如何实现一个线程池? 线程池的概念这里不多说,在讲它的原理前,我们先自己想一下,如果我来写,那如何实现一个线程池? 1.1 线程池的重要 阅读全文
posted @ 2020-11-24 19:55
白露~
阅读(482)
评论(0)
推荐(0)
摘要:
MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 事务:MySQL对于事务默认是不支持的,只有某些存储引擎中如:innodb可以支持。而Oracle对于事务是完全支 阅读全文
posted @ 2020-11-24 16:27
白露~
阅读(199)
评论(0)
推荐(0)
摘要:
目录 系列目录 一、引子 1.1 背景 2.spring boot对jta的支持 二、简单样例 2.1 业务场景 2.2 简单样例 2.3 测试验证 正文 回到顶部 一、引子 1.1 背景 鉴于spring boot满天飞的大环境,本节样例使用Spring Boot+Atomikos(TM)+Myb 阅读全文
posted @ 2020-11-24 15:41
白露~
阅读(219)
评论(0)
推荐(0)
摘要:
目录 系列目录 一、引子 二、概念 2.1.本地事务 2.2.分布式事务 2.3 相关协议发展历史 三、DTP模型 & XA规范 背景 3.1 DTP模型 3.1.1 模型元素 3.1.2 单应用跨库DTP 3.1.3 跨应用DTP 3.2 XA规范 3.2.1 xa_*()函数群 3.2.2 ax 阅读全文
posted @ 2020-11-24 15:38
白露~
阅读(380)
评论(0)
推荐(0)
摘要:
1. 通过Executors创建线程池的弊端 在创建线程池的时候,大部分人还是会选择使用Executors去创建。 下面是创建定长线程池(FixedThreadPool)的一个例子,严格来说,当使用如下代码创建线程池时,是不符合编程规范的。 ExecutorService fixedThreadPo 阅读全文
posted @ 2020-11-24 15:30
白露~
阅读(373)
评论(0)
推荐(0)
摘要:
文章目录 一、缓存队列 LinkedBlockingQueue 没有设置固定容量大小 1.1、Executors.newFixedThreadPool() 1.2、Executors.newSingleThreadExecutor() 总结: 二 、最大线程数量是 Integer.MAX_VALUE 阅读全文
posted @ 2020-11-24 15:18
白露~
阅读(606)
评论(0)
推荐(0)
摘要:
线程池中重要的配置 corePoolSize : 核心线程数量 workQueue : 等待队列 maximumPoolSize : 最大线程数量 提交任务时,判断的顺序为 corePoolSize --> workQueue -->maximumPoolSize 当线程数小于核心线程数时,创建核心 阅读全文
posted @ 2020-11-24 15:00
白露~
阅读(380)
评论(0)
推荐(0)
摘要:
项目中使用的线程池的地方很多,一直以来感觉对它的参数已经掌握的很好了,但是遇到几次问题之后才发现欠缺的这么多 遇到的坑 任务提交后长时间没有执行 任务进入了队列,线程还在执行之前的任务。本质原因是对线程和队列的优先级认识不深刻,有一种错觉以为是所有线程都忙的时候才进入任务队列。实际上相反,是队列满的 阅读全文
posted @ 2020-11-24 14:59
白露~
阅读(579)
评论(0)
推荐(0)
摘要:
目录 系列目录 一、回顾 1.1 回顾 1.2 目标 二、灵魂问答 2.1.什么是事务? 2.2.什么时候需要加 本地事务/分布式事务? 2.3.本地事务如何实现? 2.4.分布式事务如何实现? 三、不足 一、回顾 1.1 回顾 分布式从来都不是简单的东西。为此写本系列文章也耗费了笔者大量脑细胞,从 阅读全文
posted @ 2020-11-24 14:28
白露~
阅读(157)
评论(0)
推荐(0)
摘要:
目录 系列目录 引子 角色: 作用: 一、bean定义 1.1 JtaTransactionManager 1.2 AtomikosDataSourceBean 二、源码剖析 2.1 自动配置类 2.2 JtaAutoConfiguration 2.3 TransactionAutoConfigur 阅读全文
posted @ 2020-11-24 14:27
白露~
阅读(767)
评论(0)
推荐(0)
摘要:
引子 从Mysql5开始,innoDB引擎支持XA协议的分布式事务。DTP模型中,一个TM(事务管理器管理)管理多个RM(资源管理器),每个RM维护自己的事务分支。在看源码之前我们看一下底层DB mysql对XA事务的支持。 回到顶部 1. XA语法 官网:13.3.8.1 XA Transacti 阅读全文
posted @ 2020-11-24 12:14
白露~
阅读(658)
评论(0)
推荐(0)
摘要:
目录 系列目录 一、引子 二、JTA模型 分析 三、JTA接口 四、 AS对JTA的支持 4.1 典型场景 4.2 时序图 一、引子 既然出现了分布式场景(DTP模型), 大java也及时制定出一套规范来给各大应用服务器、数据库/mq等厂商使用,以方便管理互通 》JTA闪亮登场。JTA(Java T 阅读全文
posted @ 2020-11-24 12:12
白露~
阅读(743)
评论(0)
推荐(0)
摘要:
简介: 这个对于我们常用的分库分表方案来说,有很大的优势,分库分表的扩容是一件头疼的问题,如果采用对db层做一致性hash,或是中间价的支持,它的成本过于高昂了,如果不如此,只能停机维护来处理,对高可用性会产生影响。 这个对于我们常用的分库分表方案来说,有很大的优势,分库分表的扩容是一件头疼的问题, 阅读全文
posted @ 2020-11-24 11:23
白露~
阅读(209)
评论(0)
推荐(0)
摘要:
一般来说数据库是通过一个微服务逻辑统一访问,通常数据库访问两个库的架构图如下所示: 随着数据量的增大,数据库要进行水平切分,分库后将数据分布到不同的数据库实例(甚至物理机器)上,以达到降低数据量,增强性能的扩容目的。 如上图所示,用户库user分布在四个实例上,ip0和ip1,服务层通过用户标识ui 阅读全文
posted @ 2020-11-24 11:21
白露~
阅读(355)
评论(0)
推荐(0)
摘要:
一、缘起 (1)并发量大,流量大的互联网架构,一般来说,数据库上层都有一个服务层,服务层记录了“业务库名”与“数据库实例”的映射关系,通过数据库连接池向数据库路由sql语句以执行: 如上图:服务层配置用户库user对应的数据库实例物理位置为ip(其实是一个内网域名)。 (2)随着数据量的增大,数据要 阅读全文
posted @ 2020-11-24 11:19
白露~
阅读(228)
评论(0)
推荐(0)
摘要:
(1) 对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮(2) 分页查询 MySQL是直接在SQL语句中写"select... from ...where...limit x, y",有limit就可以实现分页 阅读全文
posted @ 2020-11-24 11:02
白露~
阅读(199)
评论(0)
推荐(0)
|