Hi zusammen,
ich habe eine Frage:
Ich besitze eine statische Klasse die ein Array von DateFormat Objekten anbietet. Dieser Klasse kann ein String übergeben werden, welcher in ein Date formatiert wird.
Da DateFormat nicht threadSafe ist, habe ich den Block wo der String geparsed wird synchronisiert.
An dem folgendem Code könnt ihr sehen wie ich synchronisiere. Könnt ihr mir erklären warum Variante 1 nicht funktioniert. Variante 2 sollte funktionieren, aber nich nicht ausreichend getestet.
ich habe eine Frage:
Ich besitze eine statische Klasse die ein Array von DateFormat Objekten anbietet. Dieser Klasse kann ein String übergeben werden, welcher in ein Date formatiert wird.
Da DateFormat nicht threadSafe ist, habe ich den Block wo der String geparsed wird synchronisiert.
An dem folgendem Code könnt ihr sehen wie ich synchronisiere. Könnt ihr mir erklären warum Variante 1 nicht funktioniert. Variante 2 sollte funktionieren, aber nich nicht ausreichend getestet.
Java:
class MyClass{
static DateFormat[] formats[]={...}
//variante 1
static Date parse(String aDate){
Date date;
for(int i=0; i< formats.length; i++){
synchronized(MyClass.class){
date = formats[i].parse(aDate);
}
if(date!=null){
return date;
}
}
return date;
}
//variante 2
static Date parse(String aDate){
Date date;
for(int i=0; i< formats.length; i++){
synchronized(formats[i]){
date = formats[i].parse(aDate);
}
if(date!=null){
return date;
}
}
return date;
}
}
Zuletzt bearbeitet: