Are*_*sby 9 java concurrency ejb-3.1
我已经开始阅读有关单例会话bean和用于使用容器管理并发的注释.与简单地使用'synchronized'关键字相比,我没有看到这样的好处,所以我怀疑有一些重要的东西我不知道.考虑一下Rubinger&Burke,O'Reilly的" Enterprise JavaBeans 3.1 " 一书中的这个例子:
@javax.ejb.Lock(javax.ejb.LockType.READ)
public String concurrentReadOnlyMethod(){...}
@javax.ejb.Lock(javax.ejb.LockType.WRITE)
public void allowOnlyOneWriteAtATimeMethod(String stringToSet){...}
Run Code Online (Sandbox Code Playgroud)
这是怎么比读情况下,所有toghether省略注释和使用更好的synchronized关键字写的情况下,像这样的:
public String concurrentReadOnlyMethod(){...}
public synchronized void allowOnlyOneWriteAtATimeMethod(String stringToSet){...}
Run Code Online (Sandbox Code Playgroud)
简单的。
“concurrentReadOnlyMethod”根本不同步,因此它不会获得同步的其他副作用(例如对内存模型内的变量的影响)。另外,读锁会阻塞写锁,因此使用同步锁,您可以让两个线程同时运行这两种方法,而使用读/写锁则不会。
显然,当您拥有多个 READ 锁和少量 WRITE 锁时,会有更多价值,因为所有 READ 锁都可以共享并同时运行,而 WRITE 锁的行为更像普通的同步。
| 归档时间: |
|
| 查看次数: |
6208 次 |
| 最近记录: |