gpt4 book ai didi

另一个线程内的 Java 同步

转载 作者:行者123 更新时间:2023-12-02 00:30:01 27 4
gpt4 key购买 nike

我有一个关于 Java 同步的简单问题。

请假设以下代码:

public class Test {
private String address;
private int age;

public synchronized setAddress(String a) {
address = a;
}

public synchronized setAge(int a) {
age = a;
}

public synchronized void start() {
...

listener = new Thread(new Runnable(){
public void run() {
...
setAge(10);
...

synchronized(Test.this) {
address = null;
}
}
}
}
}

当在另一个线程内调用同步方法或同步块(synchronized block)时,我对 Java 同步有点不确定。

假设运行类Test的线程为A,并且监听器线程 B。

那么如果我执行上面的代码,是否保证同步方法调用和同步块(synchronized block)与A(运行Test类的线程)同步?

感谢您的阅读。

最佳答案

不,

同步方法正在锁定Test实例,而同步块(synchronized block)正在锁定Test类对象 .

参见Java synchronized static methods: lock on object or classJava Synchronized Block for .class

关于另一个线程内的 Java 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9255628/

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