2016-06-08 100 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

隨着扭曲的反應器,你可以通過改變代碼張貼導致反應器中完成的事件提供了一個「退出」的能力。您的主線程只會在發佈此事件時起作用。通過睡眠解決方案,你不得不睡了一小間隔,檢查是否退出事件被張貼,然後回去睡覺,如果它不是 - 這意味着,退出不是直接和你的主線程也將是每當它醒來時,不必要地工作。

相關問題