多线程与MQ区别
- 使用多线程,如果该机器宕机,则创建的线程就全部没了,会导致子线程任务丢失,MQ就不会丢失
- MQ具有削峰能力, 当巨量请求发送过来时,MQ可以存储到消息容器中。但如果使用多线程,会创建大量线程,Tomcat默认就200个线程,如果使用线程池,大量线程过来,会直接把线程池灌满。那再创建线程,会导致触发淘汰策略,直接拒绝了
- 多线程会耗费CPU资源,但MQ不会,可以配置消费一个再拿下一个,始终保持CPU,内存最佳状态
- 服务集群配置时,MQ可以更均衡的分配到每个服务器,因为多个服务器会同时向MQ拿取消息。但多线程在哪台机器开启的,就会在哪台机器执行,会导致任务倾斜现象,使得某个服务器开启了大量线程,其他服务器却很空闲
多线程与MQ选择建议
大型项目还是推荐MQ,如果是并发不高,任务量不大,那选择哪个都可以