项目中异步方法无法启动的问题
最近在对接消息队列,当项目启动时,会自动顺序启动一个方法。这个方法里,会顺序调用几十个异步方法。每个异步方法都是接收不同主题的队列消息。发现一个问题,就是新添加的异步方法,根本不会启动,在应用日志里也不会有什么日志出现。
AsyncConfigurer.getAsyncExecutor()
后来发现,如果不配置上面的方法,异步方法会使用默认的线程池,然后呢线程数量就固定为8,不够用了。解决方法就是重写这个方法,然后扩大线程池的规模。
默认线程池固定的底层原理是这样的,虽然最大线程数很大很大,但是新建线程的条件是等待队列要充满,但是等待队列也非常大根本不会充满,所以线程的数量就一直固定在8了。这样就会导致一些异步方法压根不会执行。