Metodi thread destroy() e stop(Throwable) Rimossi in JDK 11
Il messaggio "RFR(s):8204243:remove Thread.destroy() and Thread.stop(Throwable)" di @DrDeprecator (Stuart Marks) sulla mailing list OpenJDK core-libs-dev è una richiesta di revisione (RFR) di un set di modifiche associato a JDK-8204243 [“remove Thread.destroy() and Thread.stop(Throwable)”]. Sia la segnalazione di bug che il messaggio della mailing list descrivono la storia di questi due metodi Thread di riferimento e spiegano che nessuno dei due metodi fa davvero nulla di utile.
La documentazione dell'API Javadoc JDK 10 per java.lang.Thread mostra sei metodi su Thread
classi che sono deprecate, tre delle quali sono esplicitamente contrassegnate per la rimozione. La tabella seguente riassume questi Thread
deprecati metodi.
Metodi deprecati in java.lang.Thread a partire da JDK 10 | |||
---|---|---|---|
Metodo | Deprecato da | Per Rimozione? | JDK 10 Stato |
countStackFrames() | 1.2 | Sì | Dipende dal deprecato suspend() |
destroy() | 1.5 | Sì | Genera NoSuchMethodError sin dall'inizio (mai implementato) |
resume() | 1.2 | No | "Esiste esclusivamente per l'uso con suspend() “ |
stop() | 1.2 | No | "Questo metodo è intrinsecamente pericoloso." |
stop(Lanciabile) | 1.2 | Sì | Genera UnsupportedOperationException da JDK 8 |
suspend() | 1.2 | No | "Questo metodo... è intrinsecamente soggetto a deadlock." |
Ora sembra che due dei tre Thread
metodi che sono deprecati e contrassegnato per la rimozione verrà rimosso con JDK 11. Entrambi i metodi Thread.destroy() e Thread.stop(Throwable) dovrebbero essere rimossi completamente a partire da JDK 11. Il destroy()
il metodo non ha mai fatto altro che lanciare il NoSuchMethodError
e il stop(Throwable)
il metodo non ha fatto altro che lanciare UnsupportedOperationException
da JDK 8. Buona liberazione da questi metodi!
Riferimenti aggiuntivi
- Deprecazione primitiva del thread Java
- Come eliminare un thread Java
- Perché l'interruzione, la sospensione e il ripristino del thread sono obsoleti
- RFR(s):8204243:rimuovere Thread.destroy() e Thread.stop(Throwable)
- JDK-8204243 [“remove Thread.destroy() e Thread.stop(Throwable)”]
- JDK-8204260 [“remove Thread.destroy() e Thread.stop(Throwable)”]
- JDK-4102667 ["Thread.countStackFrames() dovrebbe essere un metodo deprecato."]
- JDK-8177680 [“Umbrella:Rimuovi le API deprecate a livello terminale da JDK 11”]
- JDK-8177554 [“Umbrella:Rimuovere le API deprecate a livello terminale da JDK 10”]
- È ora di fermare Thread.stop? (rivisitato)