Problemas com TimerTask

2 respostas
J

Pessoal, estou criando um programa que simula chamadas telefonicas.
As chamadas são criadas em um intervalo de tempo, no meu caso a cada 1 segundo.
Pensei em usar uma TimerTask para fazer isso.
O problema é que o médoto a sobrescrever, o método run, é void, logo não retorna a chamada criada.

public class GeradorDeChamadas extends TimerTask{
    
       .........
  public GeradorDeChamadas(int C1C1, int C1C2, int C1FA, int C2C1, int C2C2, int C2FA){
       .........
    }
       
    public Chamada geraChamada(){
        ........
    }

    @Override
    public void run() {
        Chamada c = geraChamada();
       
    }
}

Outro problema é que instancio esta classe no main e mesmo que
consiga retorna um objeto chamada, como fazer p guardar as várias chamadas
criadas ao longo da simulação?

public static void main(String [] args) throws InterruptedException{
         ........
        
        GeradorDeChamadas g = new GeradorDeChamadas(50, 10, 10, 10,10,10);
        
        Timer TEC = new Timer();
        TEC.scheduleAtFixedRate(g, new Date(System.currentTimeMillis()), 1000);
       
        // COMO OBTER AS CHAMADAS CRIADAS AO LONGO DO TEMPO?
        
}

Obrigado!

2 Respostas

E
jhooon:
Pessoal, estou criando um programa que simula chamadas telefonicas. As chamadas são criadas em um intervalo de tempo, no meu caso a cada 1 segundo. Pensei em usar uma TimerTask para fazer isso. O problema é que o médoto a sobrescrever, o método run, é void, logo não retorna a chamada criada.
public class GeradorDeChamadas extends TimerTask{
    
       .........
  public GeradorDeChamadas(int C1C1, int C1C2, int C1FA, int C2C1, int C2C2, int C2FA){
       .........
    }
       
    public Chamada geraChamada(){
        ........
    }

    @Override
    public void run() {
        Chamada c = geraChamada();
       
    }
}

Outro problema é que instancio esta classe no main e mesmo que
consiga retorna um objeto chamada, como fazer p guardar as várias chamadas
criadas ao longo da simulação?

public static void main(String [] args) throws InterruptedException{
         ........
        
        GeradorDeChamadas g = new GeradorDeChamadas(50, 10, 10, 10,10,10);
        
        Timer TEC = new Timer();
        TEC.scheduleAtFixedRate(g, new Date(System.currentTimeMillis()), 1000);
       
        // COMO OBTER AS CHAMADAS CRIADAS AO LONGO DO TEMPO?
        
}

Obrigado!


Por que é que você não pode usar um mero Thread.sleep()?

J

Eu tenho outros eventos para controlor neste programa.
Se eu usar uma Thread.sleep() o meu programa vai "parar" por um período de tempo.
E não é o que eu quero.

Eu preciso que em tempos em tempos (1 segundo, por exemplo) uma chamada seja criada...
Mas durante esse "1 segundo" outros eventos estão acontecendo e se eu usar um sleep() esses eventos
irão parar também (até aonde eu sei, pelo menos) e eles não vão ter o comportamento que eu preciso.

Entendes?

Obrigado.

entanglement:
jhooon:
Pessoal, estou criando um programa que simula chamadas telefonicas. As chamadas são criadas em um intervalo de tempo, no meu caso a cada 1 segundo. Pensei em usar uma TimerTask para fazer isso. O problema é que o médoto a sobrescrever, o método run, é void, logo não retorna a chamada criada.
public class GeradorDeChamadas extends TimerTask{
    
       .........
  public GeradorDeChamadas(int C1C1, int C1C2, int C1FA, int C2C1, int C2C2, int C2FA){
       .........
    }
       
    public Chamada geraChamada(){
        ........
    }

    @Override
    public void run() {
        Chamada c = geraChamada();
       
    }
}

Outro problema é que instancio esta classe no main e mesmo que
consiga retorna um objeto chamada, como fazer p guardar as várias chamadas
criadas ao longo da simulação?

public static void main(String [] args) throws InterruptedException{
         ........
        
        GeradorDeChamadas g = new GeradorDeChamadas(50, 10, 10, 10,10,10);
        
        Timer TEC = new Timer();
        TEC.scheduleAtFixedRate(g, new Date(System.currentTimeMillis()), 1000);
       
        // COMO OBTER AS CHAMADAS CRIADAS AO LONGO DO TEMPO?
        
}

Obrigado!


Por que é que você não pode usar um mero Thread.sleep()?

Criado 30 de abril de 2012
Ultima resposta 30 de abr. de 2012
Respostas 2
Participantes 2