java 语法:“同步 (this)”
2022-09-01 03:06:32
你能给我解释一下这段java代码吗?我无法理解这种语法。
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}
你能给我解释一下这段java代码吗?我无法理解这种语法。
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}
这意味着这个代码块意味着不超过一个线程能够访问该块内的代码。synchronized
还意味着您可以在当前实例上进行同步(在当前实例上获取锁定)。this
这是我在Kathy Sierra的java认证书中发现的。
由于同步确实会损害并发性,因此您不希望同步超出保护数据所需的代码。因此,如果方法的范围超出需要的范围,则可以将同步部分的范围缩小到比完整方法小的东西 - 只是一个块。
请看下面的代码片段:
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
}
}
在第二个代码段中,同步锁仅应用于该代码块,而不是整个方法。