1. 실 안전 문제의 원인
스레드 안전 문제는 글로벌 변수와 정적 변수로 인해 발생합니다.
2. 스레드 안전 문제
simpledateformate sdf = new simpledateformat (); sdf.parse (datest)를 사용하십시오. sdf.format (날짜); sdf.parse (datest)에는 캘리드 객체에 대한 언급이 있습니다. 소스 코드에서 calendar.clear (); 및 calendar.gettime (); // 캘린더 시간을 얻습니다
stresure a callendar.clear () 후 calendar.gettime ()을 아직 실행하지 않은 경우, sture b는 sdf.parse ()를 다시 호출 한 다음 Sudle B를 sdf.clear () 메서드를 실행합니다.
Threadlocal은 공간을 사용하여 교환 시간을 사용하고 동기화 된 시간을 사용하여 공간을 교환합니다.
ThreadLocal을 사용하여 스레드 안전을 해결하십시오.
공개 클래스 ThreadLocalDateUtil {private static final String date_format = "yyyy-mm-dd hh : mm : ss"; private static strandlocal <DateFormat> ThreadLocal = new ThreadLocal <DateFormat> (); public static dateformat getDateFormat () {dateformat df = rooidlocal.get (); if (df == null) {df = new SimpledateFormat (date_format); ThreadLocal.set (df); } 반환 df; } public static string formatDate (날짜) 파seexception {return getDateFormat (). 형식 (날짜); } public static date parse (String strdate) parseexception {return getDateFormat (). Parse (strdate); }}동기화 된 솔루션 사용 :
공개 클래스 Datesyncutil {private static simpledateformat sdf = new SimpledateFormat ( "yyyy-mm-dd hh : mm : ss"); public static string formatdate (날짜 날짜) parseexception {synchronized (sdf) {return sdf.format (date); }} public static date parse (String strdate) parseexception {synchronized (sdf) {return sdf.parse (strdate); }}}이 기사를 읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 웹 사이트를 지원 해주셔서 감사합니다!