我读到了Java的集合,然后我读到了这一行:
“集合类中没有一个是同步的,但正如您在本章后面将看到的,可以获得同步版本。”
有人能告诉我Java中同步集合和非同步集合之间的区别吗?
发布于 2019-03-13 11:13:26
在同步中,如果我们正在执行某项任务,那么我们需要等待它完成,然后再转移到另一个任务。
默认情况下,集合类不同步。集合对象是可变的,这意味着一旦创建对象,该对象每次调用两个线程,但一个线程正在更改对象的值,然后可以由另一个对象执行。因此,它并不是线程安全。
我们可以使用静态方法java.util.Collections.synchronizedCollection(Collection c)显式同步集合
发布于 2014-02-02 06:45:21
同步集合意味着类是线程安全的。(您可以拥有线程安全的非同步集合,但这是另外一千篇文章的主题。)
集合通过获取锁来同步突变,以确保其他线程不会破坏状态。
基本上,使用非同步版本,除非您有多个线程。
(如果您不知道,线程本质上就是程序中的执行线。有些程序有多个线程,它们都共享相同的代码和内存。)
发布于 2014-02-02 06:52:29
默认情况下,集合类不同步。但是,如果需要同步集合,则可以使用静态方法java.util.Collections.synchronizedCollection(Collection<T> c)。它将为您的集合对象创建包装器。因此,实际上,您的集合对象将不是同步的,但是您将通过包装器对象中的同步方法访问对象的方法。
https://stackoverflow.com/questions/21507858
复制相似问题