Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

AMB

correr duas classes do mesmo package de forma intercalada

Mensagens Recomendadas

AMB

Boa Tarde

É o seguinte eu tenho um projecto que possui um package e nesse package tenho duas classes que estão a correr de forma automática de 10 em 10 minutos.

Mas a classe A tem de correr sempre primeiro que a B. Como posso por a B só a correr depois de a A estar terminada?

Estou utilizando o eclipse.

Obrigada

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Já não é a primeira vez que mencionas o Eclipse, o curioso é que o IDE pouco ou nada terá a ver com o código ;)

De qualquer forma, o que era importante era saber como é que estás a fazer as classes serem executadas periodicamente. O que é que estás a usar para iniciar e repetir a execução, dado que aí poderá estar a resposta.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AMB

eu tenho o seguinte código nas duas classes:

antes do main

public static final long Tempo = 60000; //repete o código a cada 60000milissegundos = 1minuto

dentro do main

{
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...");
			lerficheiro();
		}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 = 1 minuto)
      }
}
}

Obrigada

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

OK, estás a usar Timers para iniciar as tarefas, e estas classes não têm forma de te dizer se já terminaram a tarefa. A única coisa que me lembro será, na tarefa da classe A que executas, colocares uma mecanismo de controlo que te diga que a tarefa terminou, uma simples variável deve ser suficiente.

Tens de encontrar uma forma de apenas iniciar a segunda tarefa se a primeira já terminou, ou usas um ciclo que bloqueie o código ou outro mecanismo qualquer.

Se tens este tipo de dependência não seria mais simples, a tarefa da classe A chamar a tarefa da classe B quando terminar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Invocas o método que precisas? Acedes à instância e invocas o método como é normal em Java, não percebi bem a pergunta.

Tu é que sabes como é que o código está feito, como é que as classes funcionam e como que é se interligam, tu é que tens de saber como é que podes a partir do primeiro método aceder ao segundo, ou até se isso é impossível.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.