Je recherche un remplacement de fil-sécurité pour SimpleDateDeformat code>
. parseObject code>
sur bon vieux fastdateformat code>
n'est pas implémenté et jette une erreur. Des idées? Je n'ai besoin de quelque chose de fantaisie, de la sécurité de la sécurité et de la capacité de gérer ce modèle: "AAAA-MM-DD" code>. P>
5 Réponses :
Si possible, utilisez temps Joda . Ses analyseurs de date / heure sont du thread-coffre-fort et c'est généralement un beaucoup em> plus binger API que Vous peut utiliser em> utiliser uniquement ses analyseurs, puis convertir les valeurs de retour à date code> /
calendrier code>. P>.
date code>, mais personnellement, je vous recommanderais d'utiliser toute la bibliothèque. P>
Pourquoi ne pas mettre l'appel de SimpleDateDeformat.parseObject () code> dans votre propre
Synchronisé code> bloc? p>
a trouvé un Solution .
Cela peut ne pas bien performer, mais c'est facile. La performance dépendra du nombre de threads essentielles vraiment d'accéder au formateur en même temps. Je voudrais essayer cela (ou simplement envelopper vos appels à SimpleDateFormat dans un bloc de synchronisation) d'abord voir si c'est vraiment un problème.
Comme indiqué dans Cet article Vous pouvez soit Synchronisez, utilisez les habitants du fil ou Joda-Time.
Par exemple, à l'aide de THFLOCALS: P>
public class DateFormatTest { private static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>(){ @Override protected DateFormat initialValue() { return new SimpleDateFormat("yyyyMMdd"); } }; public Date convert(String source) throws ParseException{ Date d = df.get().parse(source); return d; } }
+1 Pas de blocage. Mémoire commerciale pour la sécurité du fil. Aucune grosse bibliothèque externe pour un cas simple.
Votre réponse est une victime de garantie d'une bombe de réputation élevée.
the cité ci-dessous est un avis de la < un href = "https://www.joda.org/joda-time/" rel = "Nofollow NOREFERRER"> Page d'accueil de Joda-Time : P> Notez que de Java SE 8 à partir de 8, les utilisateurs sont invités à migrer vers Java.Time (JSR-310) - une partie centrale du JDK qui remplace ce projet. P>
blockQuote> La date moderne -Time API est basé sur ISO 8601 et ne nécessite pas d'utilisation d'un En savoir plus sur l'API moderne de date-heure de Trail: date de date forte>. P> * Pour une raison quelconque, si vous devez vous tenir à Java 6 ou Java 7, vous pouvez utiliser Thraeten-backport strong> em> qui porte la plupart des Java.time EM> Fonctionnalité à Java 6 & 7. Si vous travaillez pour un projet Android et que votre niveau d'API Android n'est toujours pas conforme à Java-8, vérifiez API Java 8+ Disponible via Desseuking et Comment utiliser Threetenabp dans Android Project .
sup> p> h1> java.time code> types sont Safe-Safe . Le
java.time code> API (le API moderne de date-heure * sup>) existe depuis mars 2014 dans le cadre de la bibliothèque standard Java SE 8. P>
DateTimeformater Code> Objet explicitement tant que la chaîne de date-heure est conforme aux normes ISO 8601. Vous avez peut-être remarqué que je n'ai pas utilisé de type analysant (
DateTimeformatter code>) dans le code ci-dessus car
aaaa-mm-dd code> est également le motif ISO 8601 pour une date. < / p>