能告诉我这段java代码吗?我无法理解这种语法.
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}
Run Code Online (Sandbox Code Playgroud)
Abu*_*kar 29
这意味着这段代码synchronized意味着只有一个线程能够访问该块内的代码.
也this意味着您可以在当前实例上进行同步(获取当前实例的锁定).
这就是我在Kathy Sierra的java认证书中找到的.
由于同步确实会损害并发性,因此您不希望同步任何超出保护数据所需的代码.因此,如果方法的范围超出需要,则可以将同步部分的范围缩小到小于完整方法的范围 - 仅限于块.
请查看以下代码段:
public synchronized void doStuff() {
System.out.println("synchronized");
}
Run Code Online (Sandbox Code Playgroud)
可以更改为:
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
}
}
Run Code Online (Sandbox Code Playgroud)
在第二个代码段中,同步锁仅应用于该代码块而不是整个方法.
synchronized (this)
Run Code Online (Sandbox Code Playgroud)
是实现块级同步的语法。
这意味着this只能在对象上并且一次只有一个线程可以执行封闭的块。
在这里查看更详细的答案:块级同步