é possível gerir o tempo de execução de tarefas?

o meu código é o seguinte:

public static final long Tempo = 120000;
  
public static void main(String[] args)
   {
	System.out.println("A iniciar....");
	Timer timer = null;
	if(timer == null){
		timer = new Timer();
		TimerTask tarefa = new TimerTask(){
		public void run(){
			try{
				System.out.println("Continua a ler ficheiro..."); 
				lerficheiro(); //corre a classe Open de leitura de ficheiros
			}catch (Exception e){
				e.printStackTrace();
			}
			try{
				System.out.println("Continua a calcular DAP...");
				//PDos x = new PDos(); //corre a classe PDos de cálculo de DAP máximo
				PDos.dosemetria();
			}catch (Exception e){
				e.printStackTrace();
			}
			try{
				System.out.println("Continua a eliminar BD...");
				//Delete del = new Delete(); //corre a classe PDos de cálculo de DAP máximo
				Delete.apaga();
			}catch (Exception e){
				e.printStackTrace();
			}
		}
	};
	timer.scheduleAtFixedRate(tarefa, Tempo, Tempo); //o código pós main, é o que permite a repetição da execução do código a cada x tempo anteriormente definido (neste caso = 2 minutos)
      }
}
}
  

o que gostaria de saber é se posso correr o lerficheiro e a class PDos de 2 em 2 minutos que é o tempo que está definido, mas só correr a delete de 10 em 10.

se for possivel como poderei fazer isso??

obrigada!!

se eu entendi direito o que você quer, para executar de tempo em tempo, você pode colocar a chamada do método em um loop infinito, dando um Thread.sleep(valor); no final do loop, caso você queira que só execute nos primeiros 10 minutos por exemplo, você pode pegar o System.currenttime antes de iniciar o loop e, ao inicia-lo você pode pegar o horário atual e comparar com o pego da mesma forma (com o currenttime) anteriormente, e caso tenha passado 10 minutos da um break.

alguma coisa ± assim:

[code]long inicio = System.currentTimeInMilis();//acho que é esse o nome exato do método, confirma ai

while(true){

long horarioAtual = System.currentTimeInMilis();
if (horarioAtual - inicio >= xxx){ //calcula ai você quando ta 10 minutos

 break;

}

fazAlgumaCoisa();

try{ Thread.sleep(1000);//tempo de espera entre execuções do metodo
}catch(InterruptedException ie){}
}[/code]

alguma coisa ± assim, ou usar do while (horarioAtual - inicio < xxx);, ou alguma coisa assim… avontade… ai cada uma dessas tarefas teria uma thread a parte, para o tempo de execução de uma tarefa não influir na outra…

bom…boa sorte…

Vou ter este tópico debaixo de olho.

À uns tempos (anos já) tive que fazer assim uma coisa e utilizei penso que o Thread.sleep, e punha lá o tempo e ele parava esse tempo ou seja, num ciclo qualquer pões o método e o Thread.sleep(ou Pause já não me lembro bem) e ele para os tais 2 minutos e depois retorna. O problema disso é que se eu quisesse fazer mais alguma coisa no programa em paralelo com o Thread.sleepnão podia ou seja, o programa ficava mesmo bloqueado e essa solução não era lá muito útil.

Vou esperar que apareça alguém com mais experiência para ver como se faz sem ter que bloquear o programa.

Abraço, boa sorte com esse problema.

EDIT: Houve alguém que se antecipou a mim (maior_abandonado). Deixo então a questão a ele: imaginemos que eu tenho um programa que tem várias funcionalidades e menus e tal, e que eu quero que ele execute determinado método de X em X tempo, no entanto eu quero, no intervalo dessas execuções, chamar outros métodos fazer outras acções. Dessa forma é possível? É que eu fiz mais ou menos assim uma altura e não dava.

Obrigado.

Estude a classe TimerTask.