Do not run a TimerTask at a time

0

I have several tasks created every 20 seconds, what I need is that they do not overlap so that the audio is not played at the same time. Is there any way to know if the task is to run?

    private void falloVibrador1Prueba(ResultSet rs) {
    try {
        rs.next();
        if (rs.getRow() != 0) {
            if (activoVibrador1 == false) {

                if (rs.getInt(1) == 1 && rs.getInt(2) > 0) {
                    if (jchIgVibrador1.isSelected()) {
                        timerTaskVibrador1 = new TareaVibrador1(rs.getInt(2));
                        timerVibrador1 = new Timer(true);
                        timerVibrador1.scheduleAtFixedRate(timerTaskVibrador1, 0, 20000);
                        activoVibrador1 = true;
                        jbVibrador1.setBackground(Color.RED);
                    }
                }
            }
            if (rs.getInt(2) == 0 && activoVibrador1 == true) {
                activoVibrador1 = false;
                timerVibrador1.cancel();
                jbVibrador1.setBackground(Color.GREEN);
            }
        }
    } catch (SQLException ex) {
        System.err.println("" + ex);
    }
}

TASK CLASS

public class TareaVibrador1 extends TimerTask {

    int zonaFallo;
    AudioVibrador audioVibrador = new AudioVibrador();

    public TareaVibrador1(int zonaFallo) {
        this.zonaFallo = zonaFallo;
    }

    @Override
    public void run() {
        eventoFalloVibrador1();

    }

    public void eventoFalloVibrador1() {
        switch (zonaFallo) {
            case 1:
                audioVibrador.playFalloVibrador1Reponer();
                break;
            case 2:
                audioVibrador.playFalloVibrador1Atasco();
                break;
        }

    }
}
    
asked by R.Priego 07.11.2016 в 11:35
source

0 answers