Il programma termina dopo nove stampe:Come fermare un ScheduledExecutorService?
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();
}
}
Come fermare un processo (cioè processo java in Eclipse per esempio), perché non si ferma dopo un limite di tempo in 9 secondi?
Beh ... Cosa intendi con "non si ferma dopo un limite di tempo in 9 secondi"? L'ho appena testato e il "beep" si ferma dopo 9 secondi, come previsto. L'intero programma non si ferma, ovviamente, perché non hai chiuso il pool di thread. Se - invece di annullare il cicalino - è sufficiente spegnere il programmatore dopo 9 secondi, il programma uscirà normalmente. È questo il comportamento che volevi? – Seelenvirtuose