这意味着该代码块
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 }}在第二个片段中,同步锁仅应用于该代码块,而不是整个方法。



