假设方法A
正在调用方法B
。方法A
可以控制方法B
的执行时间并将其中断,假设为60秒(方法B
可以挂起)例如?
答案 0 :(得分:5)
您可以使用ExecutorService
异步运行任务,获取Future
,以便在完成任务时获取任务结果。 get
上有一个Future
方法,您可以调用该方法等待答案,并超时。如果超时,您会尝试通过cancel
上的Future
取消该任务。
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
。
答案 1 :(得分:0)
你能描述一下你到底想要什么吗?
只需停止执行方法即可使用return, System.exit()
,最后一站VM。
按时间,只需检查时间并从方法返回。此外,你可以尝试一些反思黑客......
顺便说一下,如果你用更多的话来描述你需要什么来帮助你,这些只是想象力。
答案 2 :(得分:0)
尝试:
public static void wait(int n){
long time0,time1;
time0=System.currentTimeMillis();
do{
time1=System.currentTimeMillis();
}
while (time1-time0<n);
}
我认为这很有效。如果您调用此方法,请使用您希望程序作为参数等待的时间量(以毫秒为单位)传递它。
祝你好运!