类A在构造的时候异步创建类B的对象,然后在类A.a()的方法中使用了类B的对象提示空指针异常?
怎么解决此类问题? 既然在类A构造时使用异步创建的类B的对象,说明当时是考虑到创建比较耗时,或者说遇到了耗时问题改成了异步处理
那现在就是在调用A.a()方法时怎么能拿到类B的不为null的对象问题,我问了大模型,建议我用CompletableFuture可以解决这个问题,示例代码如下
但是我复制到IDE中执行发现没有打印thenAccept方法中的输出,我继续问,告知我可能主线程执行太快结束了,所以我加了一个while(true){}发现可以打印出thenAccept方法中的输出,然后我又在想while(true)不太完美,即使输出了thenAccept方法中的日志,还是不会停止,所以我思考加入一个boolean变量默认为true,等到执行完thenAccept方法最后的代码时boolean变量设置为false,然后while()里传入这个boolean变量,这时IDE建议我用AutomicBoolean,最后大功告成,我继续思考,这里为什么建议我用AutomicBoolean替代boolean,发现有线程安全,原子操作,高性能(比synchronized更高性能,无需锁,基于硬件的原子操作)等优点,如此这个问题结束