【Java】スレッドセーフな書き方を目指す(メモ)

【Java入門】スレッドセーフな書き方を目指す

  • ステートレスにする(クラス変数・インスタンス変数を使わずにローカル変数を用いる。)
  • メソッドに変数を渡したい場合は、その都度渡す。
  • 定数等、static宣言するものはクラス変数やインスタンス変数でも可。
  • 文字の連結にはStringBufferを使用する。(StringBuilderは使わない。)
  • 日付を操作する場合はLocalDateTimeクラスを使用する。(DataクラスやCalendarクラスを使わない。)
  • SimpleDateFormatクラスの代わりにDateTimeFormatterクラスを使用する。(前者はスレッドセーフではないが、後者は不変クラスかつ、スレッドセーフである。)
  • 同期化する必要がある処理にはsynchronizedを付与することを検討する。
ローカル変数の値はメモリ上スタック領域に保持されるため、1つのスレッドからしか参照されない。
一方、クラス変数・インスタンス変数はヒープ領域に保持されるため、複数のスレッドから参照されてしまう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です