Concurrency Avanzado

Terminación insegura de hilos a cancelación cooperativa

Sustituye Thread.stop() y las banderas compartidas improvisadas por una cancelación de tareas consciente de la interrupción.

✕ Forced thread termination
Thread worker = new Thread(this::runTask);
worker.start();

// May stop the thread while shared state is inconsistent.
worker.stop();
✓ Future cancellation
Future<?> worker = executor.submit(this::runTask);

// Requests interruption; the task must cooperate.
worker.cancel(true);
¿Ves un problema con este código? Cuéntanos.
🛡

Preserva invariantes

Las tareas se detienen solo en rutas de código diseñadas para la cancelación.

🧩

Control estándar

Future representa la ejecución, la finalización y la cancelación en conjunto.

🔗

Componible

La interrupción funciona con colas bloqueantes, locks, executors e hilos virtuales.

Enfoque Antiguo
Thread.stop()
Enfoque Moderno
Future.cancel(true)
Desde JDK
5
Dificultad
Avanzado
Terminación insegura de hilos a cancelación cooperativa
Disponible

Future y ExecutorService están disponibles desde JDK 5 (sept. 2004).

Thread.stop() puede terminar el código mientras posee monitores o está actualizando estado compartido, dejando los objetos dañados. La cancelación moderna es cooperativa. Cancela el Future con interrupción, propaga InterruptedException cuando sea posible, restaura el estado de interrupción cuando no se puede propagar, y diseña la tarea para que alcance puntos seguros de cancelación.