Ho un compito lungo in esecuzione, qualcosa come:Java lunga esecuzione compito Discussione interrompere vs annullare bandiera
public void myCancellableTask() {
while (someCondition) {
checkIfCancelRequested();
doSomeWork();
}
}
Il compito può essere cancellato (un annullamento viene richiesta e checkIfCancelRequested() controlla il flag annulla). Generalmente quando scrivo loop cancellabili come questo, uso un flag per indicare che è stata richiesta una cancellazione. Ma, so che potrei anche usare Thread.interrupt e controllare se il thread è stato interrotto. Non sono sicuro quale sarebbe l'approccio preferito e perché, pensieri?
grazie,
Jeff
Buona roba qui. È fin troppo comune vedere la deglutizione dell'interrupt o semplicemente loggare e continuare senza reimpostare il flag di interrupt. Penso che le persone si sentano frustrate dal fatto che sia un'eccezione controllata che non sanno cosa fare, quindi non fanno nulla. –