Esse erro já está me atormentando. Em algumas ações eu recarrego uma página através do ajax. No exato momento que acontece esse erro deveria ocorrer a passagem de uma String para data como abaixo:
Datedt=Util.SDF_DATA.parse(data);
O engraçado é que eu mando imprimir a String da data momentos antes dessa conversão é a data está correta. Alguem sabe o que pode estar gerando esse erro?
Por acaso o seu DateFormat foi declarado como uma variável “static”? Tem um cheirinho…
T
thingol
Vou postar uma solução (que postei no ano passado) a um problema que ocorre quando DateFormat é posto em uma variável estática. Ocorreu com outra pessoa no ano passado portanto procure no fórum o que ocorreu com ela.
importjava.util.Date;importjava.text.DateFormat;importjava.text.SimpleDateFormat;classTesteSimpleDateFormatThreadSafeimplementsRunnable{privatestaticDateFormatstaticDf;static{staticDf=newSimpleDateFormat("yyyy-MM-dd");staticDf.setLenient(false);}/** Isto declara uma instância de SimpleDateFormat para cada thread que acessa sua servlet */ThreadLocaltl=newThreadLocal(){protectedsynchronizedObjectinitialValue(){DateFormatdf=newSimpleDateFormat("yyyy-MM-dd");df.setLenient(false);returndf;};};/** Isto mostra como obter a variável "threadLocal" */publicvoidefetuaTeste(){DateFormatdf=(DateFormat)tl.get();System.out.println(df.format(newDate()));}/** Para o teste de threads */publicvoidrun(){while(true){DateFormatdf=(DateFormat)tl.get();// --> método correto// DateFormat df = staticDf; // --> método incorretoStrings=df.format(newDate());if(!s.equals("2007-04-16")){// por favor, altere isto em uma outra dataSystem.out.println("Erro! "+s);break;}}}/** * O teste a seguir reproduz o seu erro se você descomentar * a linha escrita "método incorreto" e não dá erro se você * descomentar a linha escrita "método correto" acima. */publicstaticvoidmain(String[]args){TesteSimpleDateFormatThreadSafeteste=newTesteSimpleDateFormatThreadSafe();for(inti=0;i<10;++i){newThread(teste).start();}}}
tRuNkSnEt
Bem que tentei achar esse seu tópico para entender um pouco mais sobre isso tudo.
No fim não adianta muito ter um objeto DateFormat static sendo que vou ter de ter uma instância para cada tread que acessa?