0
私はコードを与えられました。ユーザー名とサービスタイプに基づいて一意のIDを作成します。 ユニークなIDはdbで、dbは私が見ることのできないDAOクラスを介して読み込まれます。 IDを作成するには多くの手順が必要です。Javaの同期とdbの値
create(user,service) {
id=getIdViaDAO(user,service)
if(id==null) {
create few classes and call few methods.
id=generareId(few objects)
session.setId(id)
dao.createSession(session)
}
return id
}
マルチスレッド環境では、一意のIDの保証はありません。私は、値としてキーやIDなどのuserId +サービスとのConcurrentHashMapにIDをキャッシュします:一意
ソリューションを保証するために
。メソッドが呼び出されるたびに私はキーが存在しない場合は値(id)をチェックし、idを作成します。これにより競合が軽減され、一意性が保証されます。
私の解決策に問題がある場合、および/またはこれにはより良い解決策がありますか?
idはローカル変数 –
です。同じユーザーとサービスでgetIdViaDAOを呼び出すと(1つのスレッドを使用して)何度も同じIDを取得できますか?さらに、他のユーザー+サービスの組み合わせでは別のIDが生成されますか? – chahuistle