La fixation d'un délai maximal d'exécution d'une méthode/thread

J'ai une méthode, qui écrit sur la base de données. L'exigence est de s'assurer que cette méthode ne s'exécute pas après un certain temps s'est écoulé. S'il revient avant que, alors rien ne devrait être fait.

Une approche de base que je peux penser à est de faire quelque chose comme ça.

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();
        }   
    }
}

Un problème avec cette approche est que, même si la méthode renvoie devant le max de temps d'exécution total, même alors, le programme s'arrête pour attendre le temps de s'écouler.

Comment puis-je faire de mieux (ou peut-être plus correctement) ? Et si nous utilisons Thread, comment pouvons-nous savoir qui de la Thread exécute cette méthode ?

Ce qui est le plus inconscient solution, Δt = t2 - t2 o.O

OriginalL'auteur OneMoreError | 2013-12-10