你能给我解释一下这段java代码吗?我不能理解这个语法。
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}发布于 2012-11-07 15:05:56
这意味着这段代码是synchronized的,这意味着最多只有一个线程能够访问该块中的代码。
另外,this意味着您可以在当前实例上进行同步(获取当前实例上的锁)。
这就是我在凯西·塞拉的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
}
}在第二个代码片段中,同步锁仅应用于该代码块,而不是整个方法。
发布于 2012-11-07 15:10:01
synchronized (this)是实现块级同步的语法。
这意味着在this对象上,一次只有一个线程可以执行封闭的块。
在这里可以找到更详细的答案:Block level synchronization
发布于 2012-11-07 15:16:34
第一行控制对封闭代码块的并发访问。一次只能有一个线程执行代码块。有关更多信息,请阅读this tutorial的第2.2节
synchronized (this) {下面包含的代码块似乎使用了一种(非常差的)方法,将执行线程暂停给定的时间量。
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}此外,它还“吞噬”了等待过程中可能抛出的任何异常,这确实非常淘气。
https://stackoverflow.com/questions/13264726
复制相似问题