HashMap からオブジェクトを削除し、新しいキーを使用して同じオブジェクトを元に戻すことに関連していると思われる断続的な障害のトラブルシューティングを試みています。私の HashMap は次のように作成されます。
transactions = new HashMap<Short, TransactionBase>();
再割り当てを行うコードは次のとおりです。
transactions.remove(transaction.tran_no);
transaction.tran_no = generate_transaction_id();
transactions.put(transaction.tran_no, transaction);
私が見ている断続的な動作は、この直後に実行されるコードで、トランザクション オブジェクトが検索可能であることに依存していて、新しいトランザクション ID を使用してトランザクション オブジェクトを見つけられないように見えることです。ただし、将来のある時点で、トランザクションを見つけることができます。ストローを引っ張ると、この種の動作を引き起こす可能性のある put() または remove の非同期効果はありますか?
私の知る限りでは、コンテナーは 1 つのスレッドのみによってアクセスされていることに注意してください。クラス HashMap が「同期」されていないというドキュメントを既に読んでいます。