昆仑弟子_面霸
08-15·后端开发·10年+
面试吊打面试官
面试官:你用过CompletableFuture吧?先说说它是干什么的我:它是Java8引入的异步编排工具,能把多个异步任务串起来,支持回调和组合,比Future灵活得多。面试官:那它和Future有什么本质区别?我:Future只能get阻塞拿结果,没法注册回调,也没法链式组合。CompletableFuture可以thenApply、thenCompose这些,任务完成后自动触发下一步,不用一直干等面试官:好。那你用下来,觉得它最容易踩的坑是什么?我:异常丢失面试官:详细说说?我:因为CompletableFuture内部把异常存到result字段里了,只有你主动去get、join,或者用exceptionaly、handle处理它才暴露。不然它就一直躺在那,线程也不报错面试官:怎么规避?我:在链路末尾加一个exceptionaly或者whenComplete,至少把异常打日志。另外如果用get,要带超时时间,别让它一直卡着面试官:说到卡,线程阻塞的问题你怎么看?我:我会自定义一个线程池,在thenApplyAsync这类方法里显式传进去面试官:还有别的坑吗?我:就是get和join的区别。join抛的是unchecked异常,get抛的是受检异常。我一般倾向用join,省得写try-catch。不过用join也得记得处理异常
发布于 广东
9
9
10
未登录
友善发言
评论
加载中
下载脉脉APP,成就职业梦想
违法不良信息&未成年人有害信息举报电话/客服电话:400 065 0808
违法不良信息&未成年人有害信息举报邮箱/客服邮箱:maimai@taou.com
清朗系列专项行动相关违规信息举报电话:400 065 0808,举报邮箱:maimai@taou.com
个人/企业等被诽谤侮辱、人身权或知识产权等被侵犯、网络谣言的举报地址:maimai.cn/tousu | 涉企虚假不实信息举报投诉专区
京ICP备12005786号-1copyright©maimai.cn