У меня есть метод, который записывается в базу данных. Требование состоит в том, чтобы убедиться, что этот метод не выполняется по истечении определенного времени. Если он вернется до этого, то ничего не должно быть сделано.Установка максимального времени выполнения для метода/потока
Один базовый подход, который я могу придумать, - это что-то вроде этого.
public class LimitedRuntime {
public static void writeToDb(){
// writes to the database
}
public static void main(String[] args) {
long totalExecutionTime = 8000L;
long startTime = System.currentTimeMillis();
while(System.currentTimeMillis() - startTime < totalExecutionTime)
{
writeToDb();
}
}
}
Одна из проблем этого подхода заключается в том, что даже если метод возвращает до максимального общего времени выполнения, даже тогда программа останавливается так, чтобы ждать в течение времени, чтобы истечь.
Как я могу сделать это лучше (или, может быть, более правильно)? И если мы используем Thread
, как мы можем узнать, какой Thread
выполняет этот метод?
Что касается самого невообразимого решения, 'Δt = t2 - t2' oO – Paranaix