我正在浏览Java并发教程,以了解它在Java中的工作方式,并对“ MsLunch”示例@ http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html有疑问
我试图在MsLunch示例中理解,如图所示进行编码与使用2种同步方法之间的区别。
据我了解,在方法上使用synchronized
关键字依赖于与该方法对象关联的本能锁。因此,如果class
具有两个synchronized
方法a()
和b()
,则不能在同一对象上同时调用a()
和b()
。
但是,如MsLunch类中所示对a()
和b()
进行编码,则可以在同一对象上同时调用这两种方法。
我的理解正确吗?
最佳答案
MsLunch
示例使用具有不同对象实例的synchronized
块进行锁定。因此inc1()
和inc2()
可以同时运行。
如果是同步方法,则在这种情况下this
将用于锁定,方法inc1()
和inc2()
将被串行执行。
关于java - Java线程教程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21572855/