03 2023 档案

摘要:1. 简介 相比Future(【并发编程】Java5 - Future,基本使用),Guava提供的ListenableFuture支持不阻塞主线程进行任务执行完成后的业务处理。 使用Future的实现类FutureTask想要实现一旦获取到结果立即执行后续的业务,就需要阻塞主线程等待结果或者使用其 阅读全文
posted @ 2023-03-28 16:56 C3Stones 阅读(1125) 评论(0) 推荐(0) 编辑
摘要:1. 简介 CompletableFuture是Java8的新特性,在Future基础上,增加流式计算、函数式编程、完成通知、自定义异常、多个Future组合处理等能力,使得在多线程协同处理时更加顺利。 2. 相关博客 【并发编程】Java5 - Future,基本使用 【并发编程】Java5 - 阅读全文
posted @ 2023-03-28 16:56 C3Stones 阅读(518) 评论(0) 推荐(0) 编辑
摘要:1. 简介 相比Future(【并发编程】Java5 - Future,基本使用),CompletionService除了支持并行执行任务并获取结果外,还支持优先获取到最快执行的任务结果,但CompletionService要求并行执行的任务是无序的。 使用Future的实现类FutureTask获 阅读全文
posted @ 2023-03-28 16:55 C3Stones 阅读(123) 评论(0) 推荐(0) 编辑
摘要:1. 简介 在使用多线程开发中,不论是继承Thread类还是实现Runnable接口方式,都无法非常方便的获取异步任务执行的结果。在JDK1.5提供了和Runnable类似但多了返回值的Callable接口,通过Future接口实现类和Callable接口方式,可以非常灵活的进行多线程操作,例如:获 阅读全文
posted @ 2023-03-28 16:54 C3Stones 阅读(81) 评论(0) 推荐(0) 编辑
摘要:1. 继承Thread类 import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; /** * 继承Thread类创建多线程单元测试 * * @author CL */ @Slf4j public class Threa 阅读全文
posted @ 2023-03-28 16:53 C3Stones 阅读(91) 评论(0) 推荐(0) 编辑
摘要:1. 自定义线程池 1.1 示例代码 /** * 自定义线程池 * <p> * 优点:可以自定义参数 * </p> */ @Test public void testNewThreadPoolExecutor() { ThreadPoolExecutor executor = new ThreadP 阅读全文
posted @ 2023-03-20 22:38 C3Stones 阅读(5263) 评论(0) 推荐(1) 编辑
摘要:1. 简介 在日常开发中一些关键的业务服务,期望在高并发状态下可以正常工作,或在异常情况时可以记录当时的性能信息,所以就需要进行监控。常见的监控例如:Prometheus可以实现这个需求,如果需要更加简单方便的自主监控能力,可以引入本博客中的方案。 2. 相关博客 Promtail+Loki+Gra 阅读全文
posted @ 2023-03-09 21:21 C3Stones 阅读(2110) 评论(0) 推荐(0) 编辑
摘要:1. 简介 在日常的WEB开发中都会使用数据库存储信息。大多数情况我们只是使用了数据库,而无法感知业务对数据库的压力,从而无法有目的的提升性能。在使用数据库时,都会选用常见的C3P0、DBCP、Hikari、Druid连接池,虽然SpringBoot官方强调Hikari性能更好,但我更倾向于功能更加 阅读全文
posted @ 2023-03-08 17:29 C3Stones 阅读(1104) 评论(0) 推荐(0) 编辑
摘要:1. 使用流读取文件 public static void stream() { String fileName = "D:\\test.txt"; final String CHARSET_NAME = "UTF-8"; List<String> content = new ArrayList<> 阅读全文
posted @ 2023-03-04 20:40 C3Stones 阅读(5895) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示