La cassaforte della classe Java Messageformat è sicura?(Al contrario di SimpleDateFormat)

StackOverflow https://stackoverflow.com/questions/3257068

Domanda

So che SimpleDateFormat e NumberFormat non sono al thread sicuro.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4101500

Ma per quanto riguarda le altre classi di formato come MessageFormat?

Fortificare 360 stallando l'uso di "MessageFormat.Format (String, Object ...)" Metodo statico come problema "Condizioni di gara - Formato formato", ma quando analizzo il codice sorgente di Messageformat, l'ho vistoIn quel metodo, crea una nuova istanza locale di MessageFormat stesso.

è il thread della classe Java MessageFormat sicuro?

È stato utile?

Soluzione

the javadoc per MessageFormat dice:

.

I formati di messaggi non sono sincronizzati. Si consiglia di creare separati Formattare le istanze per ogni thread.Se thread multipli accedono a un formato Continente, deve essere sincronizzato esternamente.

Così ufficialmente, no - non è al sicuro.

I documenti per SimpleDateFormat dicono molto la stessa cosa.

Ora, i documenti maggio essere conservativi, e in pratica funzionerà bene in più fili, ma non vale il rischio.

Altri suggerimenti

Se si sta preferendo al metodo

public static String format(String pattern, Object... arguments)
.

Questo è cassaforte dal thread poiché come descritto in Javadoc crea un nuovo MessageFormat per fare la formattazione.

btw, questo è un tipo di battitura divertente nel titolo 'SimplethreadFormat' :)

per javadoc, MessageFormat Gli oggetti non sono al sicuro.È possibile utilizzare un ThreadLocal per creare unoggetto separato per ogni filo che ne ha bisogno.

ThreadLocal<MessageFormat> threadLocalMessageFormat =
    new ThreadLocal<MessageFormat>() {
        @Override
        protected MessageFormat initialValue() {
            return new MessageFormat(pattern);
        }
    };
.

È quindi possibile utilizzare threadLocalMessageFormat.get() per ottenere un MessageFormat per il filo corrente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top