Java Synchronized关键字
在java中synchronized关键字可以作为方法的修饰符或者在代码块中使用,例如:
public synchronized void doSomething()
synchronized(semaphore) {
...
}
作为方法修饰符的优点有:
-
同步策略是显式的,并且可以写到api文档中
-
方法比较基础因而降低了死锁的机会,尽管依然可以比较容易的制造一个
缺点就是:
-
方法同步性能不高
-
通常开发者在使用synchronized关键字的时候没有清晰全面的锁策略,这样就会导致有很多的同步内容
在同步代码块中使用的优点有:
-
可以很好、很容易的控制需要锁定的内容
-
比方法同步有更好的性能
缺点有:
-
很容易形成嵌套的同步代码块,因而也容易造成死锁
-
同步策略不能被文档化,需要查看方法代码才能知道
英文原文:http://codemonkeyism.com/java-interview-question-synchronized/
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名孙镜涛(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言。