Sincronización de Java 1.4: ¿solo se permite ejecutar una instancia de método (sin bloqueo)?
Tengo una clase que propone servicios de traducción. Las traducciones deben ser recargadas cada 30 minutos. Uso el soporte Spring Timer para eso. Básicamente, mi clase se ve como:
public interface Translator {
public void loadTranslations();
public String getTranslation(String key);
}
loadTranslations () puede ser bastante largo de ejecutar, así que mientras se está ejecutando, las traducciones antiguas todavía están disponibles. Esto se hace cargando las traducciones en un Mapa local y simplemente cambiando la referencia cuando se cargan todas las traducciones.
Mi problema es: ¿cómo me aseguro de que cuando un subproceso ya está cargando traducciones, un segundo también intente ejecutarse, lo detecte y regrese inmediatamente, sin iniciar una segunda actualización?
Un método sincronizado solo pondrá en cola las cargas ... Todavía estoy en Java 1.4, así que no hay java.util.concurrent.
Gracias por tu ayuda !