Hi zusammen, ich habe folgende Frage:
Die folgende Klasse wird in einem Thread bearbeitet, dabei wird doCriticalCode() aufgerufen.
Ein anderer Thread greift am Ende von aussen auf eine Liste dieser Klasse zu.
Jetzt möchte ich wissen wie ich das ganze korrekt synchronisiere.
1. bei einem Vector (der ja schon von sich auch synchonisiert ist:
oder bei einer ArrayList:
in beiden Fällen gilt:
wenn von außen auf die Liste/Vector zugegriffen wird, wird nur davon gelesen.
Wie muss ich hier jetzt also korrekt synchronisieren?
Die folgende Klasse wird in einem Thread bearbeitet, dabei wird doCriticalCode() aufgerufen.
Ein anderer Thread greift am Ende von aussen auf eine Liste dieser Klasse zu.
Jetzt möchte ich wissen wie ich das ganze korrekt synchronisiere.
1. bei einem Vector (der ja schon von sich auch synchonisiert ist:
Java:
public class NewClass {
Vector<Integer> vector;
public NewClass() {
vector = new Vector<Integer>();
}
public Vector<Integer> getVector() {
return vector;
}
private void doCriticalCode() {
for (int i = 0; i < 100; i++) {
vector.add(i);
}
}
public void clearVector(){
vector.clear();
}
}
oder bei einer ArrayList:
Java:
public class NewClass {
ArrayList<Integer> list;
public NewClass() {
list = new ArrayList<Integer>();
}
public ArrayList<Integer> getVector() {
return list;
}
private void doCriticalCode() {
for (int i = 0; i < 100; i++) {
list.add(i);
}
}
public void clearList() {
list.clear();
}
}
in beiden Fällen gilt:
wenn von außen auf die Liste/Vector zugegriffen wird, wird nur davon gelesen.
Wie muss ich hier jetzt also korrekt synchronisieren?