【问题标题】:what are advantages of queue over multiple threads队列优于多线程的优点是什么
【发布时间】:2014-04-30 02:25:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: multithreading architecture queue jms


    【解决方案1】:

    与生产者线程将缓冲区、任务或对象指针推入队列并随后由消费者线程出列队列相比,创建线程所花费的时间要长得多,因此不可避免的开销比不断创建线程要少得多。

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

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

    【讨论】:

      【解决方案2】:

      队列优于多线程有什么优势

      我认为优势与可靠性等非功能性需求有关:

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

      • 更进一步的做法是将消息持久化到数据库中,这样您就可以在系统突然出现故障时稍后处理该消息。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-24
        • 2014-01-12
        • 1970-01-01
        • 2014-04-07
        • 2019-01-30
        • 2018-06-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多