En Guava 10+, Google está en desuso Files.deleteDirectoryContents(). JavaDoc dice¿Por qué Files.deleteDirectoryContents() está en desuso en Guava?
Obsoleto. Este método adolece de malas condiciones de detección de enlace simbólico y raza . Esta funcionalidad solo se puede admitir de forma adecuada mediante bombardeando a un comando del sistema operativo como rm -rf o del/s. Este método está programado para ser eliminado de guayaba guayaba en liberar 11,0
estoy confundido sobre por qué existe una condición de carrera. Creo que tener este método es realmente útil y encontrar el bombardeo al sistema operativo como una solución pobre. ¿Pueden los autores compartir por qué tomó esta decisión?
Para ser más claros, creo que tener un problema de condición de carrera no es un error importante. Muchas librerías, como 'ArrayList' no son seguras para hilos o tienen condiciones de carrera. Incluso 'File.remove' tiene el mismo problema. Pero todos están documentados. Así que esperaba escuchar una respuesta además de lo que la documentación ya dice sobre por qué eligieron hacerlo obsoleto. –
La diferencia entre esta condición de carrera y las clases típicas que no son seguras para subprocesos es que no existe una "solución" para ello. Por el contrario, puede resolver problemas de seguridad de subprocesos de Java con clases que no sean seguras para subprocesos mediante la sincronización en un objeto de bloqueo. Un método que simplemente no puede hacer lo que la gente espera que haga es un mal método. –
Este es un buen punto. Gracias. –