腳本執行特定時間後是否有任何停止腳本的方法?JRuby - 停止腳本執行
回答
這是一個相當模糊的定義問題。下面是幾個想法:
- 使用shell作爲控制過程。啓動JRuby腳本,將其發送到後臺,休眠一段固定的時間,然後殺死
$!
。 - 在JRuby腳本的開頭,創建一個睡眠一段固定時間的線程,然後殺死整個腳本。
- 如果您使用的是嵌入式JRuby,則可以使用Java的線程完成您想要的操作。
我有同樣的問題。我目前的方法看起來像這樣(並且不按預期工作......):
// jruby-complete-1.6.0.RC2.jar
import org.jruby.Ruby;
class JRubyStop {
public static void main(String[] args) throws InterruptedException {
final Ruby jruby = Ruby.newInstance();
Thread jrubyThread = new Thread() {
public void run() {
String scriptlet = "for i in 0..100; puts i; sleep(1); end";
jruby.evalScriptlet(scriptlet);
}
};
jrubyThread.start();
Thread.sleep(5000);
System.out.println("interrupt!");
jrubyThread.interrupt();
System.out.println("interrupted?!");
}
}
輸出「中斷?!」後,線程仍然運行,直到scriptlet結束。
編輯:將Groovy示例轉換爲Java SSCCE(http://sscce.org/)。
_輸出「中斷?!」後線程仍然運行,直到腳本結束。如果你的是一個簡單的應用程序,你可以嘗試使用Thread.stop()而不是Thread.interrupt() – RubyDosa 2011-03-07 04:40:03
謝謝,它的工作。我不情願地使用Thread.stop(),因爲它已被棄用。我必須再測試一下,因爲我必須用Ruby調用幾個Java方法。 – 2011-03-07 09:46:46
我還發現http://jira.codehaus.org/browse/JRUBY-4135其中一些JRuby人談論中斷線程的問題。 – 2011-03-07 09:48:48
超遲到的回答,但是這是我使用:
require 'timeout'
status = Timeout::timeout(5)
{
# Something that should be interrupted if it takes more than 5 seconds...
}
- 1. 停止執行Groovy腳本
- 2. 停止執行腳本?
- 3. 停止groovy腳本執行
- 4. 停止執行Ruby腳本
- 5. 停止腳本執行?
- 6. 停止並行執行PHP腳本
- 7. Trace32程序停止時執行腳本
- 8. 腳本執行停止在os.execlpe()
- 9. 如何停止執行Google Apps腳本?
- 10. Ctrl-C停止shell腳本執行
- 11. 添加jQuery停止執行腳本
- 12. 瀏覽器停止/崩潰是否停止腳本執行?
- 13. 腳本改變/辦法停止執行腳本
- 14. 執行PHP腳本8次後Bash腳本停止
- 15. PHP停止運行腳本
- 16. Perl腳本停止運行
- 17. 暫停腳本執行
- 18. curl暫停腳本執行
- 19. PHP:停止類的執行而不終止腳本(或包括)
- 20. Bash - 防止腳本在錯誤時停止執行
- 21. signal.alarm防止腳本執行
- 22. 防止JS腳本執行
- 23. 如何通過jruby代碼停止curl命令的執行?
- 24. 在啓動後停止在特定行處執行matlab腳本
- 25. 停止執行/評估.html()命令和運行腳本的jQuery
- 26. 在jquery動畫運行時停止腳本執行
- 27. Jenkins節點 - 在Jenkins中執行停止操作後,腳本不會停止
- 28. 運行時與JRuby從Java執行Ruby腳本
- 29. 腳本剛停止
- 30. PHP腳本停止
_IF您使用的是嵌入式JRuby中,你可以使用Java的線程來做你want._什麼是的,我在裏面用它JVM。但我該如何阻止它? – RubyDosa 2011-03-07 06:41:08