java.util パッケージでは、多くのクラスが変更可能です。つまり、クラスの内部状態は作成後に変更される可能性があります。複数のスレッドが同じインスタンスを共有している場合、1 つのスレッドで行われた変更が他のスレッドに予期せず影響を与え、バグが発生する可能性があります。これらの問題により、Java 8 で導入された java.time パッケージで不変クラスが作成されました。
同時実行の問題: 上記の例では、両方のタスクがsharedDate オブジェクトを同時に変更します。 Date は変更可能でスレッドセーフではないため、これにより予期しない結果が生じる可能性があります。
データの整合性: コードの一部を変更すると、同じ日付オブジェクトが使用されている他の部分に予期せず影響を及ぼし、不正なデータまたはロジック エラーが発生する可能性があります。
可変クラス: java.util.Date、java.util.Calendar、java.util.GregorianCalendar、java.text.SimpleDateFormat、java.util.TimeZone、java.util.Locale
java.time API は安全で変更できないように設計されています。そのクラスは不変です。つまり、オブジェクトを作成すると、それを変更することはできません。日付または時刻を更新するには、元のオブジェクトを変更するのではなく、更新された値で新しいオブジェクトを作成します。
以上が可変および不変の Java DateTime APIの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。