Pegar o tempo sem contar as interrupções

opa, gostaria de saber se tem como eu pegar apenas o tempo em que o meu programa esteve em execução no Sistema Operacional, sem contar as interrupções que o mesmo gera…Em outras palavras quero o tempo real que ele demora pra rodar sem nenhuma interferencia.

estou usando a chamada: System.currentTimeMillis() , eu faço uma no inicio do programa e uma no fim e daí subtraio os tempos obtidos, porém ela não serve para tal aplicação, prq eu preciso saber o tempo o mais proximo do exato possivel que é para efetuar uma comparação entre algoritmos…nao sei se ficou clara minha duvida aí, mas quem pude ajudar, por favor me ajude…heheeheh…

Não sei se o uso de Threads poderia otimizar um pouco o seu problema.
Caso queira dar uma olhada tem u m tutorial ótimo feito pelo Jeveaux aqui no portal.

Dê uma conferida, ou melhor, procure comandos de interrupção do sistema em Java. Essas interrupções forçarão o seu pc a rodar sem nenhuma interrupção o seu código. Mas preste atenção quando for usá-la, pois se no fim do seu programa vc não habilitar elas corretamente, a única solução vai ser religar o pc…

Espero ter ajudado…

Falow!

Se você estiver usando o Java 5.0, você pode usar ThreadMXBean. Veja o exemplo abaixo para saber quanto tempo de CPU foi gasto em uma determinada thread.

import java.lang.management.*;

class DoNothing {
    public DoNothing () {
    }
    public void doNothing(int x) {
        x = x;
    }
}

class SimpleThread implements Runnable {
    int iterations;
    public SimpleThread (int pIterations) {
        iterations = pIterations;
    }
    static ThreadMXBean tmb = ManagementFactory.getThreadMXBean();
    public void run() {
        DoNothing dn = new DoNothing();
        System .out .printf ("Thread %d started.%n", iterations);
        long t0 = tmb.getCurrentThreadUserTime();
        for (int i = 0; i < iterations; ++i) {
            for (int j = 0; j < 10000000; ++j) {
                dn.doNothing(j);
            }
        }
        t0 = tmb.getCurrentThreadUserTime() - t0;
        System .out .printf ("Thread %d stopped. Took %d USER CPU ms %n", iterations, t0 / 1000000);
    }
}

class TestThreadTiming {
    public static void main(String[] args) {
        int nThreads = 6;
        Thread[] thr = new Thread [nThreads];
        for (int i = 0; i < nThreads; ++i) {
            thr[i] = new Thread(new SimpleThread(i + 1));
        }
        for (int i = 0; i < nThreads; ++i) {
            thr[i].start();
        }
        
        for (int i = 0; i < nThreads; ++i) {
            try {thr[i].join();} catch (InterruptedException ex) {ex.printStackTrace();}
        }
        System .out .println ("All threads stopped. Exiting...");
    }
}