我正在浏览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/

10-12 19:17