1

この Java EE エンタープライズ JavaBean を比較してください。

@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class BMC {}

..この Bean で:

@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
@Lock(LockType.READ)
public class CMC {}

コンテナー管理の同時実行がデフォルトであるため、次のように 2 番目の Bean を書き換えることができます。

@Singleton
@Lock(LockType.READ)
public class CMC {}

したがって、もちろん不思議に思います。違いはなんですか?1 )BMCクラスで行ったようにコンテナー管理の同時実行をすべてオフにするか、 2)コンテナー管理の同時実行を使用するが、クラスで行ったように読み取りロックでクラスに注釈を付けることができCMCます。クラス宣言のどこかに書き込みロックを設定しない限り、CMCクラスは事実上、コンテナー管理の同時実行制御をオフにしました。

私がデモした 2 つの構成要素の間に技術的な違いがあると言えるでしょうか? あるコンストラクトが他のコンストラクトよりも優れている、または優先される理由はありますか?

4

1 に答える 1

3

LockType.WRITE javadocによると、 LockType.READを使用するとロックが作成されます。このロックにより、READ ロックを使用する他のメソッドを実行できますが、READ ロックが解放されるまで、WRITE ロックを使用するメソッドの実行はブロックされます。

コンテナー管理の同時実行を使用しない限り、READ ロックの作成に関連するオーバーヘッド (おそらく最小限で目立たないもの) が発生することは確かです。

どちらが優れているかは、おそらく人や状況、優先順位によって異なるでしょう。

于 2013-04-15T23:49:47.123 に答える