Comment arrêter un ScheduledExecutorService?

Le programme se termine après neuf épreuves:

class BeeperControl {

    private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

    public void beep() {
        final Runnable beeper = new Runnable() {
            public void run() {
                System.out.println("beep");
            }
        };
        final ScheduledFuture<?> beeperHandle = scheduler.scheduleAtFixedRate(
                beeper, 1, 1, SECONDS);
        scheduler.schedule(new Runnable() {
            public void run() {
                beeperHandle.cancel(true);
            }
        }, 1 * 9, SECONDS);
    }

    public static void main(String[] args) {
        BeeperControl bc = new BeeperControl();
        bc.beep();
    }
}

Comment arrêter un processus (processus java dans eclipse par exemple), car il ne s'arrête pas après un délai de 9 secondes?

Eh bien ... Que voulez-vous dire par "il ne s'arrête pas après un délai de 9 secondes"? Je viens de tester, et le "bip"s arrête au bout de 9 secondes, comme prévu. L'ensemble du programme ne s'arrête pas, bien sûr, parce que vous n'avez pas l'arrêt du pool de threads. Si - au lieu de supprimer le bip - vous simplement arrêter le planificateur après 9 secondes, votre programme va également sortir normalement. C'est que le comportement que tu voulais?

OriginalL'auteur ferro | 2015-12-10