当前位置: 首页 > 知识库问答 >
问题:

Java 7 API 文档中的“并发”和“线程安全”有什么区别?

邵飞鸿
2023-03-14

我刚刚阅读了java.util的API文档。并发包。

我的印象是“并发”和“线程安全”在那里是同义词。

示例:

ConcurrentLinkedDeque - 基于链接节点的无限并发双端。ConcurrentLinkedQueue - 基于链接节点的无限线程安全队列。

在并发包的范围内,我是否可以假设措辞线程安全和并发的含义相同?

共有3个答案

孟豪
2023-03-14

我看过< code > ConcurrentLinkedQueue 文档,它说:

[...]与其他并发收款一样[...]

它还说:

[...]基于链接节点的无限线程安全队列。

因为它说CLQ是线程安全的,并将其与“其他并发集合”进行比较,所以我认为我们可以假设它们实际上是同义使用的。

唯一真正的方法是检查Java发行版的源代码。

邓卓
2023-03-14

我认为在这种情况下,它意味着“一个线程安全的集合,它是非阻塞的(与其他使用同步的 Stack 等旧集合不同),更适合并发访问”。

易衡
2023-03-14

是的…并发包中的所有内容都可以从不同的线程并发使用;e、 g.Thread安全。

特别是在您链接到的页面上,在“并发集合”部分下:

并发集合是线程安全的,但不受单个排除锁的约束。

除此之外…<code>java.util.concurrent的全部目的*包是为并发(多线程)编程提供工具。

参见:Oracle 的 Java 教程;并发

 类似资料:
  • 我看到了不同的PHP二进制文件,比如非线程或线程安全? 这是什么意思? 这些软件包之间有什么区别?

  • 本文向大家介绍线程的 run() 和 start() 有什么区别?相关面试题,主要包含被问及线程的 run() 和 start() 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 start() 方法用于启动线程,run() 方法用于执行线程的运行时代码。run() 可以重复调用,而 start() 只能调用一次。

  • 美洲狮工人和美洲狮线程之间的区别是什么? 我知道的(如果我错了,请纠正我): > 在unicorn中,我知道我可以在一个进程中使用多个unicorn Worker来添加并发性。 但在美洲狮有线程和工人...工人不是美洲狮进程中的线程吗? 我可以在Heroku中使用更多的工作线程来添加web并发吗?

  • 问题内容: Github的安全webhooks页面说: 不建议使用普通运算符。类似的方法执行“恒定时间”字符串比较,从而使其免受常规正则运算符的某些定时攻击。 我在比较密码时使用。 是什么使它成为“安全比较”,我可以使用Node中的标准库来做到这一点吗? 问题答案: “恒定时间”字符串比较的意义在于,无论比较目标是什么(未知值),该比较将花费完全相同的时间量。此“恒定时间”不会向攻击者显示有关未知

  • 每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,run()方法称为线程体。通过调用Thread类的start()方法来启动一个线程。 start() 方法用于启动线程,run() 方法用于执行线程的运行时代码。run() 可以重复调用,而 start() 只能调用一次。 start()方法来启动一个线程,真正实现了多线程运行。调用start()方法无需等待run方法体

  • 问题内容: 进程和线程之间的技术区别是什么? 我感到像“过程”这样的词已被过度使用,并且还有硬件和软件线程。像Erlang这样的语言的轻量级进程怎么样?有确定的理由使用一个术语而不是另一个术语吗? 问题答案: 进程和线程都是独立的执行序列。典型的区别是(同一进程的)线程在共享内存空间中运行,而进程在单独的内存空间中运行。 我不确定您可能指的是“硬件”还是“软件”线程。线程是一种操作环境功能,而不是