0

トップリンクを使用していますが、値の更新中に問題が発生します。これは私のコードスニペットです

ExpressionBuilder builder = new ExpressionBuilder();
Expression expr = builder.get("addressId").equal("2");
Address address1 = (Address)uow.readObject(Address.class, expr);
address1.setPincode(address1.getPincode() + 1);
uow.registerObject(address1);
uow.writeChanges();

私のユースケースでは、マルチスレッド環境で同じコードをたとえば10スレッドで実行しているため、実行後、初期値が0の場合、DBのピンコードの値として10を取得する必要があります。ただし、コードを実行しているときは、適切な値を取得していません。誰か助けてくれませんか

4

1 に答える 1

0

ここでは競合状態になっているようです。オブジェクトの読み取りから書き込みの変更までの操作シーケンスはアトミックとして扱う必要があります。つまり、別のスレッドがその部分を完了していない場合、スレッドは読み取りを許可されません。

これを実現するための同期コードが表示されません。10の代わりにそのようなコードがないと、1から10までの任意の数をランダムに受信します

于 2010-01-26T13:09:32.433 に答える