[英]Java Threading Tutorial
我正在浏览Java并发教程,以了解它在Java中的工作方式,并对“ MsLunch”示例@ http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync有疑问。 HTML
我试图在MsLunch示例中理解,如图所示进行编码与使用2种同步方法之间的区别。
从我能理解,使用synchronized
的方法关键字依赖于与该方法的对象相关联的instrinic锁。 因此,如果一个class
具有两个synchronized
方法a()
和b()
,则不能在同一对象上同时调用a()
和b()
。
但是,如MsLunch类中所示对a()
和b()
编码,则可以同时在同一对象上调用这两种方法。
我的理解正确吗?
MsLunch
示例使用具有不同对象实例的synchronized
块进行锁定。 因此, inc1()
和inc2()
都可以同时运行。
如果它被同步方法,在这种情况下this
将被用于锁定,方法inc1()
和inc2()
将被串行执行。
在http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html中, MSLunch具有Sync块,而不是在两个不同的锁上都具有同步方法,因此,是的,两个线程将不会相互阻塞,并且能够同时访问方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.