腳本執行特定時間後是否有任何停止腳本的方法?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. 停止執行Ruby腳本
- 2. 停止groovy腳本執行
- 3. 停止並行執行PHP腳本
- 4. Trace32程序停止時執行腳本
- 5. 瀏覽器停止/崩潰是否停止腳本執行?
- 6. curl暫停腳本執行
- 7. Bash - 防止腳本在錯誤時停止執行
- 8. signal.alarm防止腳本執行
- 9. 在jquery動畫運行時停止腳本執行
- 10. 在啓動後停止在特定行處執行matlab腳本
- 11. PHP腳本停止
- 12. PHP腳本停止
- 13. bash腳本停止腳本的執行中沒有任何錯誤
- 14. 停止javascript執行
- 15. 停止執行JavaScript
- 16. 以編程方式停止執行python腳本?
- 17. Javascript對象會導致腳本停止執行
- 18. 停止執行R腳本,直到數據可用
- 19. 用於在Ubuntu中停止可執行JAR的Shell腳本
- 20. 我的JMeter腳本在while循環後停止執行
- 21. 如何停止在其他頁面執行php腳本?
- 22. 強制停止java腳本執行功能
- 23. 如何停止python腳本中的執行?
- 24. 如何在特定時間後停止我的腳本執行
- 25. 如何停止執行當前的PHP腳本?
- 26. Jython,從Java代碼裏面停止執行腳本
- 27. 批處理腳本在winrs命令後停止執行
- 28. 若要在執行腳本後停止EC2實例
- 29. 用戶命令停止執行python腳本?
- 30. Javascript setTimeout是否停止其他腳本執行
_IF您使用的是嵌入式JRuby中,你可以使用Java的線程來做你want._什麼是的,我在裏面用它JVM。但我該如何阻止它? – RubyDosa 2011-03-07 06:41:08