多线程队列的优点是什么?

时间:2014-03-22 16:42:09

标签: multithreading architecture queue jms

消息队列也可能在程序内部使用,在这种情况下,它通常只是将数据从生产者线程交换/排队到消费者线程以进行异步处理的工具。

现在用于异步处理我可以简单地创建线程...如果我在内部使用队列这不是一个进行异步处理的开销???

请通过有效的解释回答是或否。

2 个答案:

答案 0 :(得分:1)

创建一个线程需要比生成器线程更长的时间,这个线程将缓冲区,任务或对象指针推送到一个队列上,然后由一个消费者线程进行队列化,因此不可避免的开销远远小于不断创建线程。

如果您不断创建线程,则必须不断终止并销毁它们。这是更多的开销,无论如何,经常出错,导致线程失控,关机失败和模糊的内存泄漏。

线程池和应用程序生命周期线程更安全,更清洁,更易于调试,更不容易出现灾难性故障/错误,更糟糕的是,间歇性的“偏离规范”:)

答案 1 :(得分:0)

  

多线程队列的优点是什么

我认为优势与非功能性要求有关,例如可靠性:

  • 如果处理邮件时发生错误,它可以保留在队列中,直到进程执行正常。

  • 更进一步是将消息保留在数据库中,如果系统突然失败,您可以稍后处理该消息。

  

如果我在内部使用队列,这不是进行异步处理的开销

这取决于上面列出的非功能性要求是否对您的应用程序很重要,否则创建一个新的线程就足够了。