Java >> Programma Java >  >> JDK

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 Dipende dal deprecato suspend()
destroy() 1.5 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 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)

Etichetta Java