gpt4 book ai didi

Java 语法 : "synchronized (this)"

转载 作者:太空狗 更新时间:2023-10-29 22:44:55 27 4
gpt4 key购买 nike

你能给我解释一下这段java代码吗?我无法理解这种语法。

synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}

最佳答案

这意味着这个代码块是同步的,意味着只有一个线程能够访问该 block 中的代码。

此外,this 意味着您可以在当前实例上进行同步(获取当前实例上的锁)。

这是我在 Kathy Sierra 的 java 认证书中找到的。

因为同步确实会伤害并发,你不想同步任何超过保护数据所需的代码。所以如果一个方法的范围是超出需要,您可以将同步部分的范围缩小到某个范围不是一个完整的方法——只是一个 block 。

看下面的代码片段:

public synchronized void doStuff() {
System.out.println("synchronized");
}

可以改成这样:

public void doStuff() {
//do some stuff for which you do not require synchronization
synchronized(this) {
System.out.println("synchronized");
// perform stuff for which you require synchronization
}
}

在第二个片段中,同步锁只应用于该代码块而不是整个方法。

关于Java 语法 : "synchronized (this)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13264726/

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