Java 中同步集合与并发集合的区别
Java中的同步集合与并发集合
在这里,我们将看到同步集合与Java中的并发集合有何不同?
同步集合
现在,我们将看到同步的内容是什么?在这里,同步意味着一次只允许一个线程在一个对象上操作,换句话说,该对象(已同步)不能同时被多个线程修改。
同步集合可以一次由一个线程修改(即,不可能同时由多个线程修改或访问同步集合)。
同步集合的性能比并发收集低,因为一次只允许一个线程对一个对象进行操作,因此它增加了线程的等待时间。
同步集合获取整个提供了线程安全性的Collection对象上的锁。
SynchronizedMap是Collections类的静态内部类,可在java.util.Collections中使用。
在SynchronizedMap中,它获取对整个Map对象的锁定,并使用synced关键字包装Map接口的所有方法。
SynchronizedMap可能允许空键和空值取决于实际的Collections类。
示例
import java.util.*; class SynchronizedCollectionClass { public static void main(String[] args) { try { Set set = new HashSet(); set.add(10); set.add(20); set.add(30); set.add(40); set.add(50); System.out.println("Current Set is :" + set); Collection collection = Collections.synchronizedCollection(set); System.out.println("Synchronized Collection is :" + set); } catch (IndexOutOfBoundsException ex) { System.out.println("Exception :" + ex.getMessage()); } } }
输出结果
E:\Programs>javac SynchronizedCollectionClass.java E:\Programs>java SynchronizedCollectionClass Current Set is :[50, 20, 40, 10, 30] Synchronized Collection is :[50, 20, 40, 10, 30]
在这里,我们将看到并发集合与Java中的同步集合有何不同?