In Guava 10+, Google deprecato Files.deleteDirectoryContents(). JavaDoc dicePerché Files.deleteDirectoryContents() è deprecato in Guava?
Obsoleto. Questo metodo presenta uno scarso riconoscimento del collegamento simbolico e condizioni di gara . Questa funzionalità può essere supportata adeguatamente solo da eseguendo il shelling su un comando del sistema operativo come rm -rf o del/s. Questo metodo è previsto per essere rimosso da Guava Guava nel rilasciare 11,0
Sono confuso sul perché v'è una condizione di competizione. Penso che avere questo metodo sia effettivamente utile e trovare il bombardamento verso il sistema operativo come una soluzione scadente. Gli autori possono condividere perché ha preso questa decisione?
Per essere più chiari, penso che avere un problema di condizioni di gara non sia un grosso problema. Molte librerie, come 'ArrayList', non sono thread safe o hanno condizioni di gara. Anche 'File.remove' ha lo stesso problema. Ma sono tutti documentati. Quindi speravo di sentire una risposta oltre a ciò che la documentazione già dice sul motivo per cui hanno scelto di renderlo deprecato. –
La differenza tra questa condizione di competizione e le classi tipiche non thread-safe è che non esiste una "correzione" per questo. Al contrario, è possibile risolvere i problemi di sicurezza del thread Java con classi non thread-safe mediante la sincronizzazione su un oggetto lock. Un metodo che semplicemente non può fare ciò che le persone si aspettano che faccia è un metodo sbagliato. –
Questo è un buon punto. Grazie. –