我已经开始阅读有关单例会话 bean 和用于采用容器管理并发的注释的内容。与简单地使用“同步”关键字相比,我没有看到这样做的好处,所以我怀疑我遗漏了一些重要的东西。考虑一下书中的这个例子“企业 JavaBeans 3.1” 作者:Rubinger & Burke,O'Reilly:
@javax.ejb.Lock(javax.ejb.LockType.READ)
public String concurrentReadOnlyMethod(){...}
@javax.ejb.Lock(javax.ejb.LockType.WRITE)
public void allowOnlyOneWriteAtATimeMethod(String stringToSet){...}
这比在阅读案例中一起省略注释并使用synchronized
write-case 中的关键字,如下所示:
public String concurrentReadOnlyMethod(){...}
public synchronized void allowOnlyOneWriteAtATimeMethod(String stringToSet){...}
Simple.
“concurrentReadOnlyMethod”根本不同步,因此它不会获得同步的其他副作用(例如对内存模型内的变量的影响)。此外,读锁会阻塞写锁,因此使用同步锁,您可以让两个线程同时运行这两种方法,而使用读/写锁则不会。
显然,当您拥有多个 READ 锁和少量 WRITE 锁时,会有更多价值,因为所有 READ 锁都可以共享并同时运行,而 WRITE 锁的行为更像普通的同步。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)