比较一下这个Java企业javabean:
@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class BMC {}..with这个豆:
@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@Lock(LockType.READ)
public class CMC {}由于容器管理的并发性是默认的,所以可以重写第二个bean,如下所示:
@Singleton
@Lock(LockType.READ)
public class CMC {}因此,这当然让我感到好奇。有什么关系?我可以像在我的类中一样,将容器管理的并发性全部关闭,或者使用容器管理的并发性,但是使用读锁注释类,就像我在CMC类上所做的那样。只要我没有在类声明的某个地方放入写锁,CMC类实际上已经关闭了其容器管理的并发控制。
可以说,我所演示的两个构造之间存在技术上的差异吗?为什么一个构造会比另一个更好或者更好,有什么争论吗?
发布于 2013-04-15 23:49:47
根据LockType.WRITE javadoc,使用LockType.READ确实会创建一个锁。此锁允许执行具有读锁的其他方法,但阻止任何具有写锁的方法在释放读锁之前运行。
一定会有一些与创建读取锁相关的开销(可能最小且不明显),除非使用容器管理的并发性,否则不会遇到这种开销。
哪个更好,对于不同的人、不同的环境或不同的优先次序,可能有不同的答案。
https://stackoverflow.com/questions/15773840
复制相似问题