我是并发编程的新手。当我浏览主题时,我在同步,线程安全集合,原子包装类,锁之间感到困惑。 锁定和同步通过使一段代码线程安全来完成相同的工作。为什么我们需要线程安全集合或原子包装类呢?因为锁定只允许一个线程访问代码,并且不会让集合或原始类型成为线程不安全的。
答案 0 :(得分:2)
因为在使用同步时需要小心。如果您滥用它,您可能会遇到性能问题。在可能的情况下使用线程安全的集合通常会提高性能,并确保您没有错误或死锁。
答案 1 :(得分:2)
这是一个非常广泛的问题,你要问。问题是,并非所有这些都有一个严格的定义。例如,线程安全集合可能使用各种形式的同步(例如锁或原子操作)来实现线程安全。但是,即使是“线程安全”一词也没有明确定义!
然而,有一件事你肯定是错的:同步是目标,而锁,互斥,原子等是实现这一目标的手段。同步只是意味着不同的线程以同步的方式访问资源。换句话说,它们协调访问,以便它们不会彼此错误地交互。顺便说一句:我在这里谈论线程,但不同的实体也可能是进程甚至是不同的计算机,但让我们一开始就保持简单。
现在,您询问“线程安全集合或原子包装类”的使用以及为什么需要它们。答案很简单,这些东西在更高层次上提供不同的接口或服务。例如,当我有一个连接两个线程的FIFO时,它们如何同步对底层队列的访问并不重要。如果正确实现了两个线程的接口,则可以获得某些保证。只使用锁定手动执行此操作是可能的,但很复杂,因此除了低级基元之外,将它们作为高级构建块提供,只会使软件开发更容易,结果更可靠。
最后,有人建议进一步提问:正如最初提到的,并非所有术语都具有与之相关的普遍含义。因此,如果您提供了其他信息,特别是您打算使用的编程语言,它会有所帮助。