gpt4 book ai didi

java - "A synchronized block in Java is synchronized on some object"是什么意思..?

转载 作者:行者123 更新时间:2023-12-03 12:59:03 26 4
gpt4 key购买 nike

我知道为了实现线程安全和同步,我们使用同步块(synchronized block)或方法。
但我无法理解声明-
“Java 中的同步块(synchronized block)在某些对象上同步

任何现实世界的例子都会有所帮助。

最佳答案

synchronized的效果|是一次只有一个线程可以执行同步代码。但如果我们看细节,那并不是全部真相。

假设我们有两个 vector AB并想从不同的线程调用各种方法。 Vector通过同步所有重要方法,类是线程安全的。当线程 T1 执行 A.add(5,"abc") ,为什么要阻止另一个线程执行 B.get(5) ?它们没有共同的数据元素,因此并行执行两个调用不会受到伤害。

这里出现了“在 A 上同步”的概念:Vector方法在 Vector 上同步实例,所以最多一个线程可以执行同步代码对于任何给定的 vector .

所以 vector A 在 A 上同步, vector B 在 B 上同步。因此,没有两个线程可以并行操作 vector A,但一个线程可以在 A 上工作,另一个线程可以在 B 上独立工作。

  • synchronized(object) { ... }构造,您决定要同步的对象。
  • 使用 synchronized实例方法上的关键字,您可以获得当前(this)对象的同步,因此每个实例都有自己的同步。
  • 使用 synchronized静态方法上的关键字,您可以在类上获得同步,因此您可以获得针对所有其他 static synchronized 的保护此类的方法,独立于任何实例。
  • 关于java - "A synchronized block in Java is synchronized on some object"是什么意思..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52678805/

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