Es gibt zwei Möglichkeiten zur Synchronisierung:
- Verwenden Sie die Methode Collections.synchronizedList()
- Verwenden Sie eine geschützte Version von ArrayListe: CopyOnWriteArrayList
1) synchronisieren ArrayList mit der Collections.synchronizedList()
Ein wichtiger Punkt, der hier zu beachten ist, ist, dass sich der Iterator innerhalb des synchronisierten Blocks befinden muss, wie im folgenden Beispiel gezeigt:
import java.util.ArrayList;Laufzeit:
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class ArrayListSynchronized{
public static void main(String[] args) {
// Erstellen einer ArrayList< String> synchronized
Liste< String> slist = Collections.synchronizedList(new ArrayList< String> ());
//Elemente zu ArrayList hinzufügen
slist.add("1");
slist.add("5");
slist.add("2");
slist.add("7");
System.out.println("Synchronisierte Liste durchsuchen:");
synchronized(slist) {
Iterator< String> iterator = slist.iterator();
while (iterator.hasNext())
System.out.println(iterator.next());
}
}
}
browse synchronized list:
1
5
2
7
2) Verwenden von CopyOnWriteArrayList
import java.util.Iterator;Run:
public class CopyOnWriteArrayList{
public static void main(String[] args) {
java.util.concurrent.CopyOnWriteArrayList< String> al =
new java.util.concurrent.CopyOnWriteArrayList< String> ();
//Elemente zu ArrayList hinzufügen
al.add("notebook");
al.add("kit");
al.add("USB-Stick");
al.add("calculator");
System.out.println("Synchronisierte Liste durchsuchen:");
Iterator< String> iterator = al.iterator();
while (iterator.hasNext())
System.out.println(iterator.next());
}
}
browse synchronized list:
notebook
kit
USB stick
calculator
Commentaires (12)
Connectez-vous pour commenter
Rejoignez la discussion et partagez vos connaissances avec la communauté
Excellent tutoriel !
N'hésitez pas si vous avez des questions.