目录
问题分析
多线程异步和MQ异步其实在特性上有异曲同工之妙
多线程是进程内的概念、MQ是分布式消息队列,两者不在同一个维度上;
至于区别 ,我想任何人都可以随便说出一二。
这个问题主要考察候选人对于并发编程和分布式消息队列的理解,
以及候选人如何考虑使用多线程异步和 MQ 来解决不同的问题。
问题解答
多线程和MQ虽然在特性上都支持程序的异步操作,但是在实现本质上区别比较大,我简单说一下较大区别的几个点:
1. 处理任务的维度不同,多线程是同一个进程中的多个线程并行处理任务,MQ是通过把消息发送到不同应用节点的不同进程来处理任务
2. 数据可靠性不同,多线程异步处理任务时,数据是基于共享内存来交互的,一旦程序崩溃,内存中的数据会丢失;
使用MQ时,可以通过消息队列的持久化机制来保证消息的可靠性。
3. 分布式能力方面,MQ 具备分布式能力,可以把消息分发到不同的节点存储和消费、多线程只能在一个进程中处理任务。