In Collection Framework, only some of the classes are thread-safe or synchronized. If you need to work on a multi-threaded environment then you have to convert these non-synchronized type classes to Synchronized type collection.
Synchronized Collection
These are the classes only are synchronized:
- Vector
- HashTable
As a solution java.util.Collections class provides some static methods to make them Synchronized.
Collections Class Synchronized Methods
All these methods are static:
Collection synchronizedCollection(Collection c) | Returns a synchronized collection. |
List synchronizedList(List list) | Returns a synchronized list. |
Map<K,V> synchronizedMap(Map<K,V> m) |
Returns a synchronized map . |
NavigableMap<K,V> synchronizedNavigableMap(NavigableMap<K,V> m) |
Returns a synchronized navigable map. |
NavigableSet synchronizedNavigableSet(NavigableSet s) | Returns a synchronized navigable set . |
static Set synchronizedSet(Set s) | Returns a synchronized set . |
SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m) |
Returns a synchronized sorted map . |
SortedSet synchronizedSortedSet(SortedSet s) |
Returns a synchronized sorted set. |
Example: Synchronized Collections
In this example creating the blank type of collection and making it Synchronized. You can assign the same with collection objects.
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class CollectionSunchronizationExample { public static void main(String[] args) { Collection c = Collections.synchronizedCollection(new ArrayList()); List list = Collections.synchronizedList(new ArrayList()); Set s = Collections.synchronizedSet(new HashSet()); Map m = Collections.synchronizedMap(new HashMap()); } }
You must log in to post a comment.