gpt4 book ai didi

java - 什么是Java中的同步上下文

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:18:59 25 4
gpt4 key购买 nike

你们都知道Java中的同步上下文可以是

  • 实例。
  • 在某个加载类的 java.lang.Class 实例上。
  • 在给定的对象上

我需要问;当我写

Dimension d = new Dimension();

synchronized(d){
// critical atomic operation
}

给定对象的同步实际上等于实例上的同步。

所以当我编写 synchronized(d) 时,其中 d 是对象的一个​​实例,然后线程将获得所有同步实例代码块的锁。

能否请您提供有关同步上下文的更多详细信息。

我们将不胜感激。

最佳答案

synchronized 关键字提供对其引入的代码块(可能是整个方法)的串行访问。访问序列化是通过使用对象作为 mutex 来完成的锁。

synchronized 的三种基本用法是:

一个。在静态方法上:

static synchronized void someStaticMethod() {
// The Class object - ie "MyClass.class" - is the lock object for this block of code, which is the whole method
}

B.在实例方法上:

synchronized void someInstanceMethod() {
// The instance - ie "this" - is lock object for this block of code, which is the whole method
}

C.在任意代码块上:

private Object lock = new Object();
void someMethod() {
synchronized (lock) {
// The specified object is the lock object for this block of code
}
}

在所有情况下,一次只有一个线程可以进入同步块(synchronized block)。

在所有情况下,如果同一锁对象用于多个 block ,则只有一个线程可以进入任何 同步块(synchronized block)。例如,如果有两个 - 其他同时调用这些方法的线程将阻塞,直到第一个线程退出该方法。

关于java - 什么是Java中的同步上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6829525/

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