假設方法A
正在調用方法B
。可以方法A
控制方法B
的執行時間並將其中斷,例如60秒(方法B
可以掛起)?我該如何中斷方法執行?
0
A
回答
4
您可以使用ExecutorService
異步運行任務,獲得Future
,使您可以在任務完成時獲取任務結果。在Future
上有一個get
方法,您可以打電話等待答案,並有一個超時。如果超時,則嘗試通過在Future
上調用cancel
來取消該任務。
ExecutorService executorService = Executors.newSingleThreadExecutor();
// Callable that has a run() method that executes the task
Callable<String> callable = ...;
// Submit the task for execution
Future<String> future = executorService.submit(callable);
try {
String result = future.get(30, TimeUnit.SECONDS);
System.out.println("Result: " + result);
}
catch (TimeoutException e) {
System.out.println("Timeout");
future.cancel(true);
}
併發API還有很多,請參閱軟件包java.util.concurrent
。
0
你能描述一下你究竟想要什麼嗎? 只需停止執行方法,您可以使用return, System.exit()
,上次停止虛擬機。 按時間檢查時間並從方法返回。此外,你可以嘗試一些反思黑客... 順便說一句,這些只是一個想象力,如果你會用更多的話來描述你需要什麼,我會幫助你。
0
嘗試:
public static void wait(int n){
long time0,time1;
time0=System.currentTimeMillis();
do{
time1=System.currentTimeMillis();
}
while (time1-time0<n);
}
我認爲作品。如果您調用此方法,請將它傳遞給需要程序等待參數的時間量(以毫秒爲單位)。
祝你好運!
相關問題
- 1. JavaScript方法執行中斷
- 2. 如何在Java中的線程中停止執行該方法?
- 3. 通過斷點執行方法
- 4. 我該如何斷言一個方法只被調用一次?
- 5. 我該如何測試執行命令行程序的PHP類方法?
- 6. 如何執行方法
- 7. 如何跳過執行父方法來執行祖父方法?
- 8. 我該如何執行會員制?
- 9. 如何在FBSessionDelegate方法中執行segue?
- 10. 如何在android中執行GET方法?
- 11. 測試不執行方法,除非我在方法的返回值上斷言
- 12. 我應該如何調用BIOS中斷
- 13. 我該如何停止從頁面中斷rdlc tablix行中間
- 14. 如何在python中執行方法執行
- 15. 如何中斷執行程序線程
- 16. 我如何指定測試中的方法執行順序?
- 17. 在Python中的任意時間執行中斷方法
- 18. c#我應該如何讓我的方法準時運行
- 19. 方法執行
- 20. Xunit:在一種測試方法中執行所有'斷言'?
- 21. <ui:repeat> JSF 2.0中斷方法執行順序
- 22. 我該如何幹燥這種方法?
- 23. 我該如何重構這種方法?
- 24. 我該如何使用方法?
- 25. 我應該如何調用'startActionMode'方法?
- 26. 我該如何簡化這種方法
- 27. 我該如何改進這種方法?
- 28. 我該如何調用「召回」方法?
- 29. 從中斷中斷功能執行
- 30. 如何僅在執行第一種方法後執行第二種方法
新的設計是否適合您? –
對於此描述回答否如果一個線程中有兩個方法,並且如果B是新線程,則返回YES。 –