gpt4 book ai didi

java - Java指南中关于并发的问题

转载 作者:行者123 更新时间:2023-11-30 05:55:05 24 4
gpt4 key购买 nike

所以我一直在阅读有关并发的文章,并且在途中有一些问题(guide I followed - 虽然我不确定它是否是最好的来源):

  1. 进程与线程:主要区别在于进程是整个程序,而线程可以是程序的(小)部分吗?
  2. 我不太清楚为什么会有 interrupted() 方法和 InterruptedException。为什么还要使用 interrupted() 方法?在我看来,Java 只是增加了一个额外的间接层。
  3. 对于同步(特别是关于该链接中的同步),添加 synchronize 关键字如何解决问题?我的意思是,如果线程 A 返回其递增的 c 并且线程 B 返回递减的 c 并将其存储到其他变量,我不确定问题是如何解决的。我的意思是这可能是在回答我自己的问题,但是是否应该假定在其中一个线程返回答案后终止?如果是这样,为什么添加同步会有所不同?
  4. 我(从一些随机的 PDF 中)读到如果你有两个线程 start() 随后,你不能保证第一个线程会在第二个线程之前发生。不过,您如何保证?
  5. 在同步语句中,我不完全确定在方法中添加 synchronized 有什么意义。把它留在外面有什么问题?是不是希望两者分开变异,而是一起获得?为什么不让两者不同步?
  6. volatile 只是变量的关键字,是 synchronized 的同义词吗?
  7. 在死锁问题中,同步如何帮助解决这个问题?这种情况与启动两个更改变量的线程有何不同?
  8. 此外,其他人鞠躬的“等待”/锁定在哪里?我会认为 bow() 被阻止,而不是 bowBack()。

我会在这里停下来,因为我认为如果不回答这些问题而继续下去,我将无法理解后面的类(class)。

最佳答案

答案:

  1. 是的,进程是具有地址空间的操作系统进程,线程是一个执行单元,一个进程中可以有多个执行单元。
  2. interrupt() 方法和 InterruptedException 通常用于唤醒正在等待让它们执行某些操作或终止的线程。
  3. 同步是互斥或锁定的一种形式,是计算机编程中非常标准和必需的东西。谷歌这些条款并仔细阅读,您将得到答案。
  4. 是的,这不能保证,您必须有某种机制,涉及线程用来确保它们按所需顺序运行的同步。这将特定于线程中的代码。
  5. 查看问题 3 的答案
  6. Volatile 是一种确保特定变量可以在不同线程之间正确共享的方法。在多处理器机器上(现在几乎每个人都有)有必要确保变量的值在处理器之间保持一致。它是一种同步单个值的有效方式。
  7. 阅读有关死锁的更一般术语的内容以了解这一点。一旦您首先了解了互斥和锁定,您将能够理解死锁是如何发生的。
  8. 我没有读过你读过的 Material ,所以我不明白这一点。对不起。

关于java - Java指南中关于并发的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8721657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com