2016-06-08 77 views
1

由某个Job Monitor完全调度和监视的应用程序实现JMSMessageListener ...现在什么是防止此主线程(在JMS上注册自身的最佳方法)队列)不完成它的执行。否则,作业监视器会将此作业标记为已完成,而在消息事件中,则应该使用该作业。阻止主线程完成其执行的最佳方法

有2个ways-

  • 第一方式

    进口计时器

    一些其他任务... JMS队列登记消息

    timer.sleep(_LONG_TIME)#这将阻止它离开执行

  • 个第二way-

    从twisted.internet进口反应器

    一些其他任务... JMS队列登记消息 ''”

    reactor.run()#,这将发送执行控制至反应器

所以现在据我所知... 睡一个线程不会影响CPU和机器资源。 虽然我不确定发生了什么事,但一旦控制权进入反应堆?

回答

0

两者都不会显着影响CPU。蟒反应器是基于离ractor pattern,在它的核心是一个事件循环积木直到事件到达,并且然后处理它。在微不足道的情况下,没有提供任何事件,因此从未做过任何工作。

检查Twisted反应堆文件可能是值得的。从这里开始:http://twistedmatrix.com/documents/13.1.0/core/howto/reactor-basics.html#auto0

随着扭曲的反应器,你可以通过改变代码张贴导致反应器中完成的事件提供了一个“退出”的能力。您的主线程只会在发布此事件时起作用。通过睡眠解决方案,你不得不睡了一小间隔,检查是否退出事件被张贴,然后回去睡觉,如果它不是 - 这意味着,退出不是直接和你的主线程也将是每当它醒来时,不必要地工作。

相关问题