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

Java 使用同步方法而不是同步块是否有优势?,第1张

Java 使用同步方法而不是同步块是否有优势

在块上使用同步方法没有明显的优势。

也许唯一的一个(但我不会称其为优势)是你不需要包括对象引用

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 locksObject inputLock = new Object();Object outputLock = new Object();private void someInputRelatedWork() {    synchronized(inputLock) {         ...     } }private void someOutputRelatedWork() {    synchronized(outputLock) {         ...     }}

同样,如果方法变大,你仍然可以将同步部分分开:

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5058881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存