Executor框架与之间的区别消息队列,如JMS

时间:2014-10-26 05:24:12

标签: java asynchronous message-queue executorservice

消息队列主要用于在服务器上执行异步任务。我最近读到了关于Executor框架的内容,它也做了同样的事情。管理线程以执行异步任务。谁能告诉我两者之间的区别?

1 个答案:

答案 0 :(得分:7)

主要区别在于Executor框架用于程序内任务排队和执行,而JMS用于在不同机器上(通常)在不同机器之间进行排队。

其他差异包括:

  • JMS队列是(或可以是)持久的,其中Executor等仅在内存中。

  • JMS队列可以(我相信)在事务系统中使用,而Executor等等则不能。 (在某种程度上,这是持久性/非持久性区别的结果。)


  

这意味着如果我的应用程序没有分发,我可以使用Executor框架。

也许......

  

对于一个实例,我想编写一个fb样式的通知系统&发布订阅将使用执行程序框架吗?我假设代码将在一个数据库中位于同一台机器上。

问题是Executor框架的标准实现不会将任务队列放入数据库中。它们只是轻量级的内存数据结构。如果您的应用程序重新启动,它们不会持久化

现在,我想你可以编写将队列放入数据库的Executor / ExecutorService类。但为什么要这么麻烦?使用JMS或类似的......会更简单。