1 优秀文章合集
1.1 学习CompletionService ,以及它的思想
比如实现并行调用多个服务提供者,只要有一个服务提供者返回就立即返回的功能
1.2 讲述ConcurrentHashMap为什么不允许key和value为null
允许value为null会出现二义性
不允许key为null是因为Doug Lea不喜欢让null进入到Java集合中
1.3 CompletableFuture:运行结果出来了,你执行一下我留给你的回调函数
eg:异步流式回调。 阿里有个很常见的笔试题让根据4个外部系统接口选其中一个调用结果作为最终结果保证系统高效性,用这个就很合适;比如四个支付渠道的可用性校验,哪个最先返回就用哪个支付渠道;
场景描述: 用户在支付宝拥有多种支付方式(余额、红包、余额宝等,每种支付工具分布在不同系统),每种支付方式通过调用远程服务获取可用性。在外部资源环境不变情况下,请设计程序以最短响应时间获得尽可能多的可用支付方式列表。”
1.4 关于基础的Future
1.5 ConcurrentHashMap为什么不能存值为null的value,不能放值为null的key?
1.6 讲述热点账户的解决方案,高并发的秘籍-拆分,
请求合并的解决方案:1)队列加上定时任务, 2)Hystrix 就有请求合并的功能
1.7 时间轮算法实现定时重试功能
ScheduledExecutorService + Map,也能实现定时重发功能,注意效率的区别
1.8 关于Semaphore的用法需要注意许可超额和许可不释放导致的问题
这篇文章,有一个关于许可无法释放的点,没有理解
java高并发高频面试题:Sempahore的使用场景与常见误区_中间件兴趣圈-CSDN博客
1.9 尽量不要用Integer做锁对象,如果实在要用请用缓存结果的方式
多个线程如何保证按顺序执行?
1)用join
2)有几个线程,就用几个CountDownLauch
2 基础知识合集
2.1 Future和FutureTask的理解