使用同步方法而不是同步块有优势吗?

问题:

有谁可以告诉我同步方法的优点是同步块与一个例子?

回答:

 Can any one tell me the advantage of synchronized method over synchronized block with an example?Thanks.

使用同步方法超过块没有明显的优势。
也许唯一的(但我不会称之为优势)是你不需要包含对象引用this
方法:

public synchronized void method() { // blocks "this" from here.... 
    ...
    ...
    ...
} // to here

块:

public void method() { 
    synchronized( this ) { // blocks "this" from here .... 
        ....
        ....
        ....
    }  // to here...
}

看到?没有任何优势。
比方法有优势,主要是灵活性,因为您可以使用另一个对象作为锁,而同步该方法会锁定整个对象。
比较:

// locks the whole object
... 
private synchronized void someInputRelatedWork() {
    ... 
}
private synchronized void someOutputRelatedWork() {
    ... 
}

// Using specific locks
Object inputLock = new Object();
Object outputLock = new Object();

private void someInputRelatedWork() {
    synchronize(inputLock) { 
        ... 
    } 
}
private void someOutputRelatedWork() {
    synchronize(outputLock) { 
        ... 
    }
}

此外,如果方法增长,您仍然可以保持同步部分分开:

 private void method() {
     ... code here
     ... code here
     ... code here
    synchronized( lock ) { 
        ... very few lines of code here
    }
     ... code here
     ... code here
     ... code here
     ... code here
}

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Is there an advantage to use a Synchronized Method instead of a Synchronized Block?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

44 − = 37