Peut-on déclarer SimpleDateFormat objets comme des objets statiques
SimpleDateFormat monthFormat = new SimpleDateFormat("MMMM");
SimpleDateFormat fullFormat = new SimpleDateFormat("EE MMM dd, HH:mm:ss")
J'ai plusieurs de ces morceau de code qui est appelé souvent, ne serait-il judicieux de les déclarer comme static
variables?
C'est thread-safe pour passer dynamiques des arguments à l' format()
méthode dans de tels cas?
Vous devez vous connecter pour publier un commentaire.
Pas ils ne sont pas thread-safe.Utilisation Joda-time version à la place.
Ou de les rendre enveloppé dans de la méthode synchronisée et de le rendre thread-safe
Doc Dit clairement
ThreadLocal
avecSimpleDateFormat
De Java 8, c'est pris en charge dans la nouvelle Date de l'API.
DateTimeFormatter
est thread-safe et peut faire le même travail queSimpleDateFormat
. Cité de la JavaDoc:Pour être plus clair, il est parfaitement bien de définir un format tel que:
Et de l'utiliser dans les méthodes qui peuvent être accédées par plusieurs threads simultanément:
DateFormat n'est pas thread-safe. Si plusieurs threads utilisent la même DateFormat objet sans synchronisation, vous pouvez obtenir des résultats inattendus. Je vous conseille donc de synchroniser l'accès à la DateFormat objet, utiliser un ThreadLocal variable ou d'utiliser une autre Date API telles que Joda-Time.
Pour plus d'informations sur la façon de le faire, jetez un oeil à ce blog: DateFormat avec Plusieurs Threads
Une alternative si vous êtes déjà à l'aide d'Apache Commons:
https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/FastDateFormat.html
statique ne devrait pas être un problème.
Depuis autant que je sache, aucune garantie n'est faite au sujet de la sécurité des threads, vous auriez à vérifier le code source pour que. Et même si vous venez à la conclusion qu'il est thread-safe, cela pourrait changer avec la prochaine version.Comme dit dans une autre réponse, ils ne sont pas thread-safe.Avez-vous vraiment allouer une telle quantité énorme de threads que de donner à chaque fil de son propre Format est un problème?