- 博客(11)
- 资源 (8)
- 收藏
- 关注
原创 线程池是如何知道一个线程的任务已经执行完成?通俗易读的例子
在这个修改后的代码中,awaitTermination 方法会等待线程池中的所有任务完成,或者等待指定的时间(这里是 5 秒)。如果在指定时间内所有任务完成,就继续执行后续代码打印 “All tasks completed”;如果超时任务还未完成,先尝试停止线程池(shutdownNow),再等待 5 秒,如果还未完成则打印错误信息。
2025-03-09 21:15:03
724
原创 高并发场景下如何保证接口幂等性?常见幂等性处理方案防重令牌(token)、随机字符串(noncestr)、幂等表、防重表、数据库唯一索引
在高并发场景下,保证接口幂等性是非常重要的,以防止重复操作导致的数据不一致等问题。以下分别介绍防重令牌(token)、随机字符串(noncestr,本质和 token 类似)、幂等表、防重表(和幂等表概念相近)、数据库唯一索引这几种保证接口幂等性的方式,并给出相应的代码示例(以 Java 和 MySQL 为例)。防重令牌(token)和随机字符串(noncestr)优点:灵活性高,适用于多种业务场景。可以通过缓存等方式优化查询性能,减少数据库压力。缺点:需要额外的令牌生成和管理逻辑,增加了系统复杂度。
2025-03-08 12:05:39
998
原创 在多线程环境下进行定时任务数据上报功能时,如何考虑并发问题、处理异常以及进行批量数据处理和异常更新
在多线程环境下进行定时任务数据上报功能时,如何考虑并发问题、处理异常以及进行批量数据处理和异常更新综上所述,在多线程环境下进行定时任务数据上报功能时,需要充分考虑并发问题,合理处理异常,采用批量数据处理提高效率,并对异常数据进行记录和更新。
2025-03-06 18:31:32
722
原创 在 Java 中编写多线程程序时,遵循以下最佳实践有助于提升程序的稳定性、性能和可维护性
说明:当需要线程之间进行协作时,可以使用 Object 类的 wait()、notify() 和 notifyAll() 方法,也可以使用更高级的同步工具类,如 CountDownLatch、CyclicBarrier、Semaphore 等。推荐使用一个标志位来控制线程的运行,在线程的 run 方法中定期检查该标志位,当标志位指示线程应该停止时,安全地退出线程。说明:只在访问共享资源的最小必要代码块上加锁,避免对整个方法进行同步,以减少线程等待锁的时间,提高并发性能。
2025-03-06 13:37:13
734
原创 说一下PRC 完整的调用过程?
反序列化:接收到的数据是序列化后的二进制数据流,服务端需要将其还原为应用程序能够理解的数据结构,这一过程称为反序列化(Unmarshalling)。同样以 Protocol Buffers 为例,服务端使用生成的 Java 代码将接收到的二进制数据按照 .proto 文件定义的格式解析,重新构建出原始的 User 对象。:连接建立后,序列化后的参数数据通过网络发送到服务端。:服务端的网络接口监听到客户端的请求后,接收网络数据包,并根据网络协议(如 TCP 协议)进行重组和校验,确保数据的完整性和准确性。
2025-03-06 09:20:52
819
原创 java中的HashMap的工作原理是什么?说下与HashMap和Hashtable有什么区别
如果该位置已有元素(发生哈希冲突),且该位置的元素是链表结构,则遍历链表查找是否有相同的 key。若没有,则将新的键值对添加到链表尾部(在 JDK 1.8 之前)或根据红黑树的规则插入到红黑树中(在 JDK 1.8 及之后)。Hashtable 的初始容量默认为 11,扩容时新容量 = 旧容量 * 2 + 1,负载因子也默认为 0.75。HashMap 的初始容量默认为 16,扩容时会将容量翻倍(即新容量 = 旧容量 * 2),并且负载因子(load factor)默认为。
2025-03-06 08:30:00
602
原创 多线程定时任务批处理需要回滚时处理方案
假设我们有一个电商系统,每天凌晨需要批量处理用户的订单,将订单状态从“待处理”更新为“已处理”。这个批量处理任务是通过多线程并发执行的,每个线程处理一部分订单。如果在处理过程中某个订单出现异常(例如库存不足、支付失败等),需要回滚已经处理的所有订单状态。
2025-03-05 22:29:32
612
原创 在编写 Java 多线程程序时,遵循以下最佳实践可以提高程序的性能、稳定性和可维护性
以下将对编写 Java 多线程程序时能提升性能、稳定性与可维护性的最佳实践,进行更深入详细的阐述。
2025-03-05 17:41:26
1090
原创 ThreadLocal 介绍,使用例子及容易出现的问题,如何处理
以下将对编写 Java 多线程程序时能提升性能、稳定性与可维护性的最佳实践,进行更深入详细的阐述。
2025-03-05 13:05:52
841
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅