1. Ursachen für Sicherheitsprobleme von Fäden
Die Sicherheitsprobleme der Fäden werden durch globale Variablen und statische Variablen verursacht.
2. Probleme mit Fadensicherheit
SimpledateFormate sdf = new SimpledateFormat (); Verwenden Sie SDF.Parse (datESTR); SDF.Format (Datum); Es gibt einen Hinweis auf das Caleadar -Objekt in SDF.Parse (DEDESTEST). im Quellcode Calendar.clear (); und Calendar.getTime (); // Erhalten Sie die Zeit des Kalenders
Wenn Thread A sdf.parse () aufruft und Calendar.getTime () nach calendar.clear () noch nicht ausgeführt hat, ruft Thread b erneut sdf.parse () auf, Thread B führt auch die SDF.Clear () -Methode aus, die die Löschungen des Thread -A -Kalenderdaten verursacht;
ThreadLocal nutzt Platz für den Austausch der Zeit, Synchronized verwendet Zeit, um Platz auszutauschen
Verwenden Sie ThreadLocal, um die Gewindesicherheit zu lösen:
public class threadLocaldateutil {private statische endgültige String-Date_Format = "yyyy-mm-dd HH: mm: ss"; private static ThreadLocal <DateFormat> ThreadLocal = new ThreadLocal <DateFormat> (); public static dateFormat getDateFormat () {DateFormat df = threadLocal.get (); if (df == null) {df = new SimpledateFormat (DATE_FORMAT); threadLocal.set (df); } return df; } public static String formatDate (Datum Datum) löst ParseException {return getDateFormat (). Format (Datum); } public static date parse (String strdate) löst ParseException {return getDateFormat (). Parse (strdate); }}Verwendung synchronisierter Lösung:
public class datesyncutil {private static SimpleDateFormat SDF = new SimpledateFormat ("yyyy-mm-dd HH: mm: ss"); öffentliches statisches String -Formatdat (Datum) löst ParseException {synchronized (SDF) {return sdf.format (Datum); }} öffentliches statisches Datum Parse (String strdate) löst ParseException {synchronisiert (SDF) {return sdf.parse (strDate); }}}Vielen Dank, dass Sie diesen Artikel gelesen haben, ich hoffe, er kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Website!