摘要:
转载自 美团技术团队,原文链接 不可不说的Java“锁”事 前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。 阅读全文
摘要:
目录 一、理论分析 二、实际应用 为了加快程序处理速度,我们会将问题分解成若干个并发执行的任务。并且创建线程池,将任务委派给线程池中的线程,以便使它们可以并发地执行。在高并发的情况下采用线程池,可以有效降低线程创建释放的时间花销及资源开销,如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内 阅读全文
摘要:
目录 一、Sharding-JDBC依赖 二、代码实践 三、源码分析 在上一篇博文中,介绍了Sharding-JDBC的分片策略、分片键和分片算法的基本概念,以及2.0.3版本可以支持和无法支持的使用场景。 可以支持的场景:支持对SQL语句中的=、IN和BETWEEN AND的分片操作,但前提是分片 阅读全文
摘要:
目录 一、Sharding-JDBC依赖 二、分片策略 1. 标准分片策略 2. 复合分片策略 3. Inline表达式分片策略 4. 通过Hint而非SQL解析的方式分片的策略 5. 不分片的策略 三、分片键 四、分片算法 1. 精确分片算法 2. 范围分片算法 3. 复合分片算法 4. Hint 阅读全文
摘要:
转载自:ShardingSphere官网 目录 一、介绍 1. Sharding-JDBC 2. Sharding-Proxy 3. Sharding-Sidecar(TBD) 4. 混合架构 二、功能列表 1. 数据分片 2. 分布式事务 3. 数据库治理 三、规划线路图 在介绍Sharding- 阅读全文
摘要:
目录 一、线程池监控参数 二、线程池监控类 三、注意事项 在上一篇博文中,我们介绍了线程池的基本原理和使用方法。了解了基本概念之后,我们可以使用 Executors 类创建线程池来执行大量的任务,使用线程池的并发特性提高系统的吞吐量。但是,线程池使用不当也会使服务器资源枯竭,导致异常情况的发生,比如 阅读全文
摘要:
目录 一、入门示例 二、异常场景1 三、异常场景2 四、解决方法 之前在使用线程池的时候,出现了 java.util.concurrent.RejectedExecutionException ,原因是线程池配置不合理,导致提交的任务来不及处理。接下来用一个简单的例子来复现异常。 一、入门示例 下面 阅读全文
摘要:
上一篇博文介绍了线程池的实现原理,现在介绍如何使用线程池。 目录 一、创建线程池 二、向线程池提交任务 三、关闭线程池 四、合理配置线程池 五、线程池的监控 线程池创建规范 一、创建线程池 我们可以通过ThreadPoolExecutor来创建一个线程池。 创建一个线程池时需要输入以下几个关键参数: 阅读全文
摘要:
Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 1. 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗; 2. 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行; 阅读全文
摘要:
目录 前置条件:构造一个异步调用 一、使用wait和notify方法 二、使用条件锁 三、Future 四、使用CountDownLatch 五、使用CyclicBarrier 总结 在Java并发编程中,经常会因为需要提高响应速度而将请求异步化,即将同步请求转化为异步处理,这是很自然能想到的一种处 阅读全文